bei mir isses wieder anders: bei mir gibts nur zwei scheiben mit jeweils 4 schwarz/weiß
Da bin ich erstaunt: Bei mir waren 4 gleiche Scheiden dabei, jede mit 6 schwarzen und 6 weißen Sektoren.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ß
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
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
Bild hier
If the world does not fit your needs, just compile a new one...
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
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
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
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
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
Bild hier
If the world does not fit your needs, just compile a new one...
Lesezeichen