Da bin ich erstaunt: Bei mir waren 4 gleiche Scheiden dabei, jede mit 6 schwarzen und 6 weißen Sektoren.Zitat:
Zitat von Manf
Ich bin auch gerade dabei die Programme zu deuten. Eine kleine Info im Kopf wäre ganz hilfreich.
Gruß
Torsten
Druckbare Version
Da bin ich erstaunt: Bei mir waren 4 gleiche Scheiden dabei, jede mit 6 schwarzen und 6 weißen Sektoren.Zitat:
Zitat von Manf
Ich bin auch gerade dabei die Programme zu deuten. Eine kleine Info im Kopf wäre ganz hilfreich.
Gruß
Torsten
bei mir isses wieder anders: bei mir gibts nur zwei scheiben mit jeweils 4 schwarz/weiß
Es war die 6er Scheibe...
Hier mal der Code für das gepostete Testprogramm, nicht ganz optimal aber für den Anfang nicht schlecht...
Code:#include "asuro.h"
#include <stdio.h>
#include <stdlib.h>
//const double raddurchmesser = 38.5; //mm
//const int odoaufloesung = 6; //Wechsel pro Umdrehung
// Variablen deklarieren; geht auch unter int main()
char odo_links[4]; // Speicher für die Odometriedaten in Ascii
char odo_rechts[4];
unsigned int Odo_Data[2]; // Speicher für die Odometriedaten in Integer
int i=0; // Schleifenzähler
int a=0;
int x=0;
int main(void)
{
Init(); // Initialisieren
// Begrüssung ;-)
SerWrite("\nROBOTERNETZ -> Test der Odometrie von ASURO\n\n",46);
MotorDir(FWD, FWD); // Beide Motoren vorwärts
MotorSpeed(100,100); // Beide Motoren mit "150" drehen
//while(1) // Endlosschleife
//{
//*** Test der Odometrie beginnt ***
i=0;
for(i=0;i<100;i++) // 100 Messwerte ermitteln
{
for (a=0;a<=10000;a++){x++;} //warten
OdometrieData(Odo_Data); // Odometrie abfragen
// Werte in Ascii wandeln
itoa(Odo_Data[0],odo_links,10);
itoa(Odo_Data[1],odo_rechts,10);
// Werte über IR schicken
SerWrite(odo_links, sizeof(odo_links));
SerWrite(", ", 2);
SerWrite(odo_rechts, sizeof(odo_rechts));
SerWrite("\n\r", 2);
}
//for (a=0;a<2000;a++){Sleep(72);} // ca. 2 Sekunden warten
//SerWrite("\n--- 100 ---\n", 12);
//} // Von Vorne
MotorSpeed(0,0); // Motoren aus
MotorDir(FREE,FREE); // Motoren auf Freilauf
return 0; //Programm beenden
}
Gruß, Sonic
Hier mal ein Film vom Linienfolgen. das ist das Programm:
Die Qualität ist supermies, da das Filmchen so klein gekloppt werden mußte. Sorry.Code://****************************************************************************************************
// Liniefolgeprogramm
// entwickelt aus dem mitglieferten Demoprogramm
//
// Geschwindigkeiten wurden geändert, das Verhalten invertiert (Bei Verlassen der Ideallinie wird abgebremst statt beschleunigt)
//
// letzte Änderung 29.11.2004
#include "asuro.h"
#define SPEED 0xBF
int speedLeft,speedRight;
unsigned int lineData[2];
int ADOffset;
void LineLeft (void)
{
speedRight -=2;
if (speedRight < 0x5F) speedRight = 0x5F;
}
void LineRight (void)
{
speedLeft -=2;
if (speedLeft < 0x5F) speedLeft = 0x5F;
}
void LineDemo(void)
{
int i;
unsigned char j;
FrontLED(ON);
for (j = 0; j < 0xFF; j++) LineData(lineData);
LineData(lineData);
ADOffset = lineData[0] - lineData[1];
speedLeft = speedRight = SPEED;
MotorSpeed(speedLeft,speedRight);
for(;;) {
LineData(lineData);
i = (lineData[0] - lineData[1]) - ADOffset;
if ( i > 4) {
StatusLED(GREEN);
LineLeft();
}
else if ( i < -4) {
StatusLED(RED);
LineRight();
}
else {
StatusLED(YELLOW);
speedLeft = speedRight = SPEED;
}
MotorSpeed(speedLeft,speedRight);
}
}
int main(void)
{
Init();
LineDemo ();
while(1);
return 0;
}
Der Linenfolgeplan ist von RealRobots.
Die in Code angegebenen Geschwindigkeiten hängen vermutlich vom Exemplar ab. Schon wenn ich Alkaline statt Akkus verwende ist das Tempo so verschieden, daß die Linie leicht verloren geht.
Gruß
Torsten
Sieht gut aus, der fährt viel sanfter in die Kurven, als meiner! ;o)
Wer lesen kann ist klar im Vorteil!
Wer es tut hat schon gewonnen!
Ja, warum stehen da wohl zwei Transistortypen? Naja, den ersten Fehler, eine unsaubere Lötstelle hab ich gleich gefunden, dann klappte der Rückwärtsgang nicht, weil ich die 8 Transistoren einfach beliebig aufgelötet hatte... Zum Glück musste ich nur 2 vertauschen, angesichts der vielen Möglichkeiten ein Wunder!
Ich zähle jetzt auch zum Kreis derer, deren ASURO einwandfrei läuft, bis auf das das eine Rad schneller als das andere ist, aber ich fürchte, das problem kann man schlecht beheben.
Ich werde versuchen Morgen mal den Anschluss an eure Diskussion zu erreichen, nachdem ich das ganze Wochenende in Münster war :-)
Übrigens cooles Video, werde ich denne auch mal probieren.
MFG Moritz
So dann hier noch mal mein Testprogramm mit Fahrt zum Vergleich, ich glaube die Fahrt soll je eine ganze Drehung sein und meiner geht wegen kleinerer Spannung nicht ganz auf 360°.
Ich habe jetzt das Tool installiert und werde weitere Programme testen.
Manfred
[glow=red:ee3cc9525b][shadow=red:ee3cc9525b][highlight=red:ee3cc9525b]JAAAAAAAAA!!![/highlight:ee3cc9525b][/shadow:ee3cc9525b][/glow:ee3cc9525b]
ES FUNKTIONIERT!!!
Durch meine Dummheit und meinen Glauben, das ich nix falsch mache ist mir der Fehler unterlaufen, den Sonic auch hatte bloß das ich einfach zwei Transistoren vertauscht hatte.
Aber noch eine Verbesserung wäre vielleicht, das im Werk ein Farbtupfer auf die eine Sorte Transistoren gemacht wird, damit man die auseinandergehalten werden können! (ich hab nämlich die beiden vertauscht, weil das Licht leicht diffus war und ich sie dann verwechselt habe)
Martin
soooooo...
ich versuche gerade die Prozeduren in bascom zu reproduzieren!
nun hab ich nen problem: der adc funktioniert nicht richtig: er zeigt wenn ich start adc drin habe immer 1023 und wenn ich stop adc dinne habe dann einen wert aber dieser wird nicht mehr aktualisiert.
EDIT: liegt das vielleicht am kondensator an aref?
Martin
Hmm, an VRef ist ja keine Referenzspannung angeschlossen, also wird folglich die interne genutzt. Soweit ich weis muss man die aber vorher anschalten. Leider hab ich keine Ahnung wie das in BASCOM geht, aber es steht bestimmt in der Hilfe drinn...
Gruß, Sonic
Wie ist denn bei anderen so die Erfahrung mit dem Flashen? Die Übertragung ist bei mir sehr vorsichtig zu behandeln, Vorhänge zu, Interface nicht zu dicht dran. Ich mußte auch die Spannung von 3,6 auf 4,8V erhöhen damit es überhaupt soweit ging.
Er hat viele
c = checksum error
t = timeout
Vielleicht schließe ich ihn später zum Programmieren an ein Netzteil an, damit es "drahtlos" geht.
Manfred
Also das flashen klappt bei mir ganz gut. Es hat auch was gebracht, wenn man den Roboter etwas aus dem licht nimmt, also z.B. mal unter den Tisch stellt. Wobei ich sagen muss, dass obwohl ich noch nicht an dem Poti rumgedreht habe ich doch weitaus weniger Fehler ahbe, so 5 pro Übertragung. Und das es garnicht klappt, ist mir noch nicht passiert.
MFG Moritz
Flashen macht bei mir keine Probleme, hab zwar auch viele t & c, aber funktionieren tuts immer. Im Durchschnitt würd ich sagen so ca. 5-6 t & c sind immer mit dabei...Flash Damaged kam noch nie, jedenfalls nicht nachdem ich den Adapter repariert habe (LED).
Ich hab den Adapter allerdings, mit der SendeLED nach Unten, erhöht fixiert, der Robby steht direkt darunter, aufgebockt und an ein Labornetzteil angeschlossen...Abstand ca. 20cm. Mein Bildschirm und die Schreibtischlampe ist auch direkt daneben + Dachfenster 2m entfernt...
EDIT:
Bei mir funktioniert das Programmieren auch erst ab 4,9V, die Motoren drehen sich dabei, auf "150" gestellt, noch nicht.
Gruß, Sonic
Open COM1 --> OK !
Bulding RAM --> OK !
Connect to ASURO --> OK !
Sending Page 000 of 030 --> c flashed !
Sending Page 001 of 030 --> tctc flashed !
Sending Page 002 of 030 --> flashed !
Sending Page 003 of 030 --> flashed !
Sending Page 004 of 030 --> flashed !
Sending Page 005 of 030 --> flashed !
Sending Page 006 of 030 --> flashed !
Sending Page 007 of 030 --> flashed !
Sending Page 008 of 030 --> flashed !
Sending Page 009 of 030 --> flashed !
Sending Page 010 of 030 --> flashed !
Sending Page 011 of 030 --> flashed !
Sending Page 012 of 030 --> flashed !
Sending Page 013 of 030 --> flashed !
Sending Page 014 of 030 --> c flashed !
Sending Page 015 of 030 --> c flashed !
Sending Page 016 of 030 --> flashed !
Sending Page 017 of 030 --> flashed !
Sending Page 018 of 030 --> flashed !
Sending Page 019 of 030 --> tt flashed !
Sending Page 020 of 030 --> t flashed !
Sending Page 021 of 030 --> flashed !
Sending Page 022 of 030 --> flashed !
Sending Page 023 of 030 --> flashed !
Sending Page 024 of 030 --> t flashed !
Sending Page 025 of 030 --> flashed !
Sending Page 026 of 030 --> flashed !
Sending Page 027 of 030 --> t flashed !
Sending Page 028 of 030 --> flashed !
Sending Page 029 of 030 --> flashed !
Sending Page 030 of 030 --> flashed !
All Pages flashed !!
ASURO ready to start !!
Bei mir hängt das vom Rechner ab, bei dem einen gehts fast ohne Fehler, der andere schafft es fast nie ein Programm auf Asuro zu übertragen. Habe schon die Einstellungen des COM-Ports verglichen, aber keine Antwort gefunden. Werde mal den Tip ausprobieren, die Spannung zu erhöhen.
Gruß
Torsten
Hier ein kleines BASCOM-Programm zum Ansteuern der Motoren, nur zum Test, !ohne PWM!
Gruß, SonicCode:'**********************************************************
'ASURO - Einfache Motoransteuerung
'**********************************************************
'Ansteuerung der Motoren
'----------------------------------------------------------
' +-------+--------+--------+-------+
' | ML-V | ML-R | MR-V | MR-R |
' +-------+--------+--------+-------+
' PORT D.4 | 0 | 1 | X | X |
' +-------+--------+--------+-------+
' PORT D.5 | 1 | 0 | X | X |
' +-------+--------+--------+-------+
' PORT D.1 | 1 | 1 | X | X | <- ML Enable
' +-------+--------+--------+-------+
' PORT B.4 | X | X | 0 | 1 |
' +-------+--------+--------+-------+
' PORT B.5 | X | X | 1 | 0 |
' +-------+--------+--------+-------+
' PORT B.2 | X | X | 1 | 1 | <- MR Enable
' +-------+--------+--------+-------+
$crystal = 8000000
'Motor Rechts
Config Pinb.1 = Output
Config Pind.4 = Output
Config Pind.5 = Output
'Motor Links
Config Pinb.2 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Do
'mal sehn was geht ;-)
'*******************************
'!!! Keine PWM-Ansteuerung !!!
'Links volle Pulle vorwärts
Portd.4 = 0
Portd.5 = 1
Portb.1 = 1
Wait 2
Portb.1 = 0
Wait 1
'Links volle Pulle rückwärts
Portd.4 = 1
Portd.5 = 0
Portb.1 = 1
Wait 2
Portb.1 = 0
Wait 1
'Rechts volle Pulle vorwärts
Portb.4 = 0
Portb.5 = 1
Portb.2 = 1
Wait 2
Portb.2 = 0
Wait 1
'Rechts volle Pulle rückwärts
Portb.4 = 1
Portb.5 = 0
Portb.2 = 1
Wait 2
Portb.2 = 0
Wait 1
Loop
Der Rechner der es nie schafft ist nicht zufällig ein Laptop?Zitat:
Zitat von thille
Gruß, Sonic
Eine möglichkeit, die vorgefertigten funktionen unter Bascom zu benutzen, gibts vermutlich nicht, oder? Also StatusLED(RED) oder so?
MFG Moritz
Nein, das ist ein PENTIUM III mit 666 MHz und Win98SE.Zitat:
Zitat von sonic
Gruß
Torsten
also:
bei mir sind die bedingungen viel licht (60W 30cm Abstand direkte aufstrahlung) und der sender ca. 20cm genau über dem bot:
Open COM1 --> OK !
Bulding RAM --> OK !
Connect to ASURO --> OK !
Sending Page 000 of 085 --> c flashed !
Sending Page 001 of 085 --> flashed !
Sending Page 002 of 085 --> flashed !
Sending Page 003 of 085 --> tt flashed !
Sending Page 004 of 085 --> flashed !
Sending Page 005 of 085 --> flashed !
Sending Page 006 of 085 --> flashed !
Sending Page 007 of 085 --> tc flashed !
Sending Page 008 of 085 --> flashed !
Sending Page 009 of 085 --> flashed !
Sending Page 010 of 085 --> flashed !
Sending Page 011 of 085 --> flashed !
Sending Page 012 of 085 --> flashed !
Sending Page 013 of 085 --> flashed !
Sending Page 014 of 085 --> flashed !
Sending Page 015 of 085 --> flashed !
Sending Page 016 of 085 --> flashed !
Sending Page 017 of 085 --> flashed !
Sending Page 018 of 085 --> flashed !
Sending Page 019 of 085 --> flashed !
Sending Page 020 of 085 --> flashed !
Sending Page 021 of 085 --> flashed !
Sending Page 022 of 085 --> flashed !
Sending Page 023 of 085 --> flashed !
Sending Page 024 of 085 --> tc flashed !
Sending Page 025 of 085 --> flashed !
Sending Page 026 of 085 --> flashed !
Sending Page 027 of 085 --> flashed !
Sending Page 028 of 085 --> flashed !
Sending Page 029 of 085 --> flashed !
Sending Page 030 of 085 --> flashed !
Sending Page 031 of 085 --> flashed !
Sending Page 032 of 085 --> flashed !
Sending Page 033 of 085 --> flashed !
Sending Page 034 of 085 --> flashed !
Sending Page 035 of 085 --> flashed !
Sending Page 036 of 085 --> t flashed !
Sending Page 037 of 085 --> flashed !
Sending Page 038 of 085 --> flashed !
Sending Page 039 of 085 --> flashed !
Sending Page 040 of 085 --> flashed !
Sending Page 041 of 085 --> flashed !
Sending Page 042 of 085 --> flashed !
Sending Page 043 of 085 --> flashed !
Sending Page 044 of 085 --> t flashed !
Sending Page 045 of 085 --> flashed !
Sending Page 046 of 085 --> flashed !
Sending Page 047 of 085 --> flashed !
Sending Page 048 of 085 --> flashed !
Sending Page 049 of 085 --> flashed !
Sending Page 050 of 085 --> flashed !
Sending Page 051 of 085 --> flashed !
Sending Page 052 of 085 --> flashed !
Sending Page 053 of 085 --> flashed !
Sending Page 054 of 085 --> flashed !
Sending Page 055 of 085 --> t flashed !
Sending Page 056 of 085 --> flashed !
Sending Page 057 of 085 --> flashed !
Sending Page 058 of 085 --> flashed !
Sending Page 059 of 085 --> flashed !
Sending Page 060 of 085 --> flashed !
Sending Page 061 of 085 --> flashed !
Sending Page 062 of 085 --> flashed !
Sending Page 063 of 085 --> flashed !
Sending Page 064 of 085 --> flashed !
Sending Page 065 of 085 --> flashed !
Sending Page 066 of 085 --> flashed !
Sending Page 067 of 085 --> t flashed !
Sending Page 068 of 085 --> flashed !
Sending Page 069 of 085 --> flashed !
Sending Page 070 of 085 --> flashed !
Sending Page 071 of 085 --> flashed !
Sending Page 072 of 085 --> flashed !
Sending Page 073 of 085 --> flashed !
Sending Page 074 of 085 --> flashed !
Sending Page 075 of 085 --> flashed !
Sending Page 076 of 085 --> flashed !
Sending Page 077 of 085 --> flashed !
Sending Page 078 of 085 --> flashed !
Sending Page 079 of 085 --> flashed !
Sending Page 080 of 085 --> flashed !
Sending Page 081 of 085 --> flashed !
Sending Page 082 of 085 --> flashed !
Sending Page 083 of 085 --> t flashed !
Sending Page 084 of 085 --> flashed !
Sending Page 085 of 085 --> flashed !
All Pages flashed !!
ASURO ready to start !!
der nächste test ist mit gleichen bedingungen nur 30cm abstand und der sender ist im ca. 75°-Winkel zum ASURO!
Bei mir funktioniert es also relativ gut:
Open COM1 --> OK !
Bulding RAM --> OK !
Connect to ASURO --> OK !
Sending Page 000 of 085 --> c flashed !
Sending Page 001 of 085 --> t flashed !
Sending Page 002 of 085 --> flashed !
Sending Page 003 of 085 --> flashed !
Sending Page 004 of 085 --> flashed !
Sending Page 005 of 085 --> flashed !
Sending Page 006 of 085 --> flashed !
Sending Page 007 of 085 --> flashed !
Sending Page 008 of 085 --> flashed !
Sending Page 009 of 085 --> flashed !
Sending Page 010 of 085 --> flashed !
Sending Page 011 of 085 --> t flashed !
Sending Page 012 of 085 --> t flashed !
Sending Page 013 of 085 --> flashed !
Sending Page 014 of 085 --> flashed !
Sending Page 015 of 085 --> flashed !
Sending Page 016 of 085 --> flashed !
Sending Page 017 of 085 --> flashed !
Sending Page 018 of 085 --> flashed !
Sending Page 019 of 085 --> flashed !
Sending Page 020 of 085 --> flashed !
Sending Page 021 of 085 --> flashed !
Sending Page 022 of 085 --> flashed !
Sending Page 023 of 085 --> flashed !
Sending Page 024 of 085 --> t flashed !
Sending Page 025 of 085 --> flashed !
Sending Page 026 of 085 --> flashed !
Sending Page 027 of 085 --> flashed !
Sending Page 028 of 085 --> flashed !
Sending Page 029 of 085 --> flashed !
Sending Page 030 of 085 --> flashed !
Sending Page 031 of 085 --> flashed !
Sending Page 032 of 085 --> flashed !
Sending Page 033 of 085 --> t flashed !
Sending Page 034 of 085 --> flashed !
Sending Page 035 of 085 --> flashed !
Sending Page 036 of 085 --> flashed !
Sending Page 037 of 085 --> t flashed !
Sending Page 038 of 085 --> flashed !
Sending Page 039 of 085 --> flashed !
Sending Page 040 of 085 --> flashed !
Sending Page 041 of 085 --> flashed !
Sending Page 042 of 085 --> flashed !
Sending Page 043 of 085 --> flashed !
Sending Page 044 of 085 --> t flashed !
Sending Page 045 of 085 --> flashed !
Sending Page 046 of 085 --> flashed !
Sending Page 047 of 085 --> flashed !
Sending Page 048 of 085 --> flashed !
Sending Page 049 of 085 --> flashed !
Sending Page 050 of 085 --> t flashed !
Sending Page 051 of 085 --> flashed !
Sending Page 052 of 085 --> flashed !
Sending Page 053 of 085 --> flashed !
Sending Page 054 of 085 --> t flashed !
Sending Page 055 of 085 --> flashed !
Sending Page 056 of 085 --> flashed !
Sending Page 057 of 085 --> t flashed !
Sending Page 058 of 085 --> t flashed !
Sending Page 059 of 085 --> tt flashed !
Sending Page 060 of 085 --> flashed !
Sending Page 061 of 085 --> flashed !
Sending Page 062 of 085 --> flashed !
Sending Page 063 of 085 --> tctt flashed !
Sending Page 064 of 085 --> flashed !
Sending Page 065 of 085 --> flashed !
Sending Page 066 of 085 --> flashed !
Sending Page 067 of 085 --> flashed !
Sending Page 068 of 085 --> flashed !
Sending Page 069 of 085 --> t flashed !
Sending Page 070 of 085 --> flashed !
Sending Page 071 of 085 --> flashed !
Sending Page 072 of 085 --> flashed !
Sending Page 073 of 085 --> flashed !
Sending Page 074 of 085 --> t flashed !
Sending Page 075 of 085 --> flashed !
Sending Page 076 of 085 --> flashed !
Sending Page 077 of 085 --> t flashed !
Sending Page 078 of 085 --> flashed !
Sending Page 079 of 085 --> t flashed !
Sending Page 080 of 085 --> flashed !
Sending Page 081 of 085 --> flashed !
Sending Page 082 of 085 --> flashed !
Sending Page 083 of 085 --> flashed !
Sending Page 084 of 085 --> flashed !
Sending Page 085 of 085 --> flashed !
All Pages flashed !!
ASURO ready to start !!
Martin
Ganz kurze Zwischenfrage, wie kann ich mehrere IF-Bedingungen verknüpfen?
Also:
if(Bedingung1 und Bedingung2 und nicht Bedingung3){}
Bitte um schnelle Antwort, sonst geh ich pennen ;-)
MFG Moritz
ASURO.pdf Seite 60Zitat:
if(Bedingung1 und Bedingung2 und nicht Bedingung3){}
Manfred
Stichwort logische Operatoren
if ( (Bedingung1) && (Bedingung2) = !(Bedingung3) )
{
...
}
Nein, das meinte ich nicht, ich will das in einer if-Klammer haben.
if(Bedingung1 AND Bedingung2 AND NOT Bedingung 3){}
else{}
Nur was heißt AND und AND NOT in C?
&& ||?
MFG Moritz
Sonic´s Beispiel macht genau das was du möchtest. Er verknüfpft dabei die Ergebnisse der einzelnen Bedingungen binär miteinander. Solche Anweisungen sind manchmal auf den ersten Blick etwas schwer zu durchschauen, das ist halt "C" ;-)
Es gibt aber viele Alternativen.
And heiß "&"
Or heißt "|"
NOT heißt !
So sollte es auch gehen:
if (a==1) & (b==2) & (!(c=3))
{
puts "Bedingungen erfüllt";
}
Gruß Frank
Ok, danke, werde es dann mal testen. Ich wollte eine Linienverfolgung schreiben, wobei sich der Roboter merkt, falls er die Linie verlässt, oder sie Endet, auf welcher Seite er sie verlassen hat, um möglichst schnell zu drehen bzw. zurückzufinden.
MFG Moritz
Schon mal den Transceiver an den Rechner angeschlossen, der zickt und das Poti verdreht?Zitat:
Zitat von thille
CU, Archi
So, das Programmieren geht jetzt besser nur noch in jedem 5. Block ein timeout und das erste Programm läuft.
Wie zur erwarten ein Linienfolger auf einer schnell aufgemalten Linie.
\:D/ [fliph:f6a4c9d33e] \:D/[/fliph:f6a4c9d33e] \:D/ [fliph:f6a4c9d33e] \:D/[/fliph:f6a4c9d33e]
Sind alle soweit mit dem Setup durch?
Ich könnte mit vorstellen, als nächstes die Diode und die Fototansistoren vorn abzunehmen und durch Buchsen zu ersetzten um allgemeine Sensormodule (wie auch in der ASURO Beschreibung angegeben) anschließen zu können.
Ein Sensormodul kann ja dann wieder die Linienfolgerkombination sein. Von oben aufgesteckt und nach vorne überhängend.
Manfred
Ja, habe da schon eine ganze anderes Menge probiert. Mit Hyperterminal funktioniert der Test, es ist aber jedesmal, wenn eine Taste gedrückt und dann gehalten wird zunächst erst mal ein Leerzeichen auf dem Schirm. Wenn ich den Transceiver einfach so in den Raum halte, daß Decke und Wände schön weit weg sind, dann erscheinen alle paar Sekunden Eulen und Meerkatzen in der Anzeige. Sobald eine Taste gedrückt wird kommt erst eine Leerstelle und dann die Taste. Wenn das Programm SelfTest ausgeführt wird, kann man das Verhalten ebenso feststellen. Das erste übertragene Zeichen stimmt nicht mit dem überein, was von Asuro gesendet wird (Beispiel Öinienfolgen ist aber nicht immer Ö manchmal eben auch was anderes). Scheint also wirklich am PC zu liegen, denn an dem anderen ist es einwandfrei. Entweder ist das Terminalprogramm zerupdatet, oder die Schnittstelle hat einen Klatsch. Ich habe keine Ahnung was ich noch probieren sollte. An dem anderen Rechner sitzt meist meine Frau und und arbeitet, da muß ich eben mit Spielereien warten. :-#Zitat:
Zitat von Archi
Gruß
Torsten
Also dank der Hilfe zu dem "UND" funktioniert meine Linienverfolung eigentlich ganz gut, sogar mit Zurückfinden, falls eine Linie endet oder so. Aber ich habe dabei mit Fremdlich echt ein Problem, vor Allem, da die Lichtverteilung in meinem Zimmer nicht gleichmäßig ist. Und dabei habe ich den Vorteil des "Schwanzes" erkannt, damit kann man einfach mal schnell greifen, wenn er durch die Gegend rast. Werde zur Linienverfogung vermutlich eine Box um die Sensoren bauen um das Problem zu lösen.
MFG Moritz
Schon mal daran gedacht, nur die HelligkeitsDIFFERENZ auszuwerten?Zitat:
Zitat von RCO
CU, Archi
Das soll man sicher tun, das ist schon mal ein guter Hinweis, die Absolutwerte streuen zu sehr. Im dargestellten Programm wird zu Beginn der Fahrt eine Anfangsdiffernz gebildet, auf die man sich wärend der Fahrt und Auswertung bezieht.Zitat:
Schon mal daran gedacht, nur die HelligkeitsDIFFERENZ auszuwerten?
Bei Kreisfahrt und seitlicher Beleuchtung kann und sollte man sicher mehr tun. Es wäre dann ganz geschickt, die Sensoren etwas gegen Fremdlicht abzuschirmen.
Manfred
Die Anfangsdifferenz gleicht eigentlich nur die am Startpunkt gemessene Differenz aus, wenn sich die Beleuchtung unterwegs ändert, ist sie eigentlich nicht sehr hilfreich. Wenn die Messung so wie im Programm ziemlich regelmäßig erfolgt, könnte man auch die Änderung auswerten. Oder eine andere Variante wäre, nicht die Linie zwischen die Fototransistoren zu nehmen, sondern nur eine Kante, dann müßte einer der Sensoren über der Linie entlanggeführt werden, und der andere auf dem Untergrund. D. h. die Differenz zwischen den Sensoren sollte möglichst groß sein. Steigt die Summe beider Werte über eine bestimmte Grenze, ist die Abweichung nach einer Seite zu groß, fällt sie unter eine Grenze ist die Abweichung nach der anderen Seite zu groß. Setzt natürlich voraus, daß die Linie mindestens so breit ist, wie der Abstand der Sensoren.
Gruß
Torsten
Da hätte ich auch noch eine Idee: Die Linienbeleuchtung ein- und ausschalten und davon die Differenz bilden. Habe ich aber noch nie ausprobiert...Zitat:
Zitat von Manf
CU, Robin
Prima Idee, das wird ja richtig gut.Zitat:
Da hätte ich auch noch eine Idee: Die Linienbeleuchtung ein- und ausschalten und davon die Differenz bilden. Habe ich aber noch nie ausprobiert...
Ich wollte eigentlich noch mal wissen wie vollständig die Roboter sind und ob es noch Probleme mit den elemataren Funktionen gibt.
Ich habe mich erst zu einem elementaren Beispiel durchgekämpft, um zu sehen, daß die Grund-Funktionen einigermaßen gehen.
Ich habe natürlich das Programm von Thille (vielen Dank) als Anleitung hergenommen und erst mal nur Parameter verändert. Ich glaube irgendwie, daß ich den Funktionsumfang, der sich bietet noch nicht voll nutze.
Sonic ist ja auch schon lange bei eigenen Programmen. Wie sieht es mit dem Rad-Encoder aus? Wenn die Kurven nur sinusförmig sind, dann sollte man vielleicht eine geringere Auflösung nehmen. Nicht 6 sondern 4 oder weniger vielleicht 2?
RCO optimiert die Linienvefolgung also geht auch schon alles? Ich habe die Motoren noch an Kabelbindern, hat sie jemand schon angeklebt?
X-Ryder hat sich zuletzt vom Flashen gemeldet. Wie sieht es mit dem Pogramm aus? Ich habe Teppiche in denen Asuro keine klare Linie findet. Den Boden mit Papier auslegen und mit Filzstift Linien zu zeichnen gelingt mir auch nicht so gut. Viel lieber wäre es mir, einen Sharp Sensor zur Seite auszurichten und den Anstand zur glatten weißen Wand zu regeln. Das ist nur ein kleiner Schritt vom Linienfolger aus. Ich werde das mal angehen mit der Buchsenkombination vorne im Asuro.
Manfred
Hi,
ich hatte die Ehre diesen Sommer am DLR bei Robin Gruber, dem Entwickler von ASURO, ein Praktikum zu absolvieren und am Roboter zu basteln.
Ich hatte davor wenig praktische Erfahrung und muss sagen, dass ich wirklich viel gelernt habe! Jetzt arbeite ich an einem weiteren Roboterprojekt bei dem ich den ATmega32 verwende, das Praktikum hat mir also viel gebracht!
Ich finde ASURO ist leicht zu bedienen, übersichtlich und benutzerfreundlich. Es werden wohl auch verschiedene Zusatzmodule rauskommen, also lasst Euch überraschen ;)
Pott
;-) Nein, da hätte man ja auch mal selber drauf kommen können...
Danke für den Tip
MFG Moritz
EDIT:
Mein Kommentar bezog sich auf die Helligkeitdifferenz-regelung.
Nächste Seite nicht gesehen ;-)
Ja, finde ich auch gut.Zitat:
Zitat von Manf
Nein, bei mir nicht, außer an meinem alten Rechner mit dem Flashen.Zitat:
Ich wollte eigentlich noch mal wissen wie vollständig die Roboter sind und ob es noch Probleme mit den elemataren Funktionen gibt.
Das geht mir auch so, deshalb habe ich mich in den vergangenen Tagen mit asuro.c und asuro.h beschäftigt, aber noch nicht alles verstanden.Zitat:
snip... Ich glaube irgendwie, daß ich den Funktionsumfang, der sich bietet noch nicht voll nutze.
Nein, habe ich noch nicht. Die Kabelbinder habe ich unter den Entstörkondensatoren durchgezogen. Die Motoren sitzen eigentlich ziemlich fest, habe ich nicht so erwartet.Zitat:
snip... Ich habe die Motoren noch an Kabelbindern, hat sie jemand schon angeklebt?
Hast Du das schon umgelötet?Zitat:
snip... Ich werde das mal angehen mit der Buchsenkombination vorne im Asuro.
Gruß
Torsten
@ Gast:
bist du derjenige von der Prosiebenseite, der einen Bericht geschrieben hat? Wenn ja, hätte ich da eine Frage an dich.
MFG Moritz
Ja, (ich hätte vielleicht schönere Buchsen nehmen können).Zitat:
Hast Du das schon umgelötet?
Etwas stört mich die Anordnung außerhalb vom Rastermaß. Da würde ich bei Gelegenheit gerne noch was ändern.
Manfred
Wenn ich mich recht erinnere ist das & bitweise in C und das && logisch.Zitat:
And heiß "&"
Or heißt "|"
NOT heißt !
So sollte es auch gehen:
if (a==1) & (b==2) & (!(c=3))
{
puts "Bedingungen erfüllt";
}
Gilt für alle:
| bitweise OR || Logisch OR.
& Bitweise AND && Logosch AND
Also müsste das if ( (a==1) && (b==2) && (!(c==3) ) heissen
wobei das letze auch ohne klammer geht, aber man immer klammern sollte allein schon wegen der ordnung