Hallo Becci,
nun bin ich mit 155 Sachen an deinem Eintrag vorbeigerauscht und habe ihn nicht als Frage interpretiert.
Du hast ja alles bestens rekapituliert und bis auf eine Formulierung "Er zählt also die Impulse vom linken und rechten Rad und vergleicht diese." passt alles perfekt.
Er zählt die Impulse (Tik's) eigentlich nicht. Der Wert difference wird bei einem Tik vom linken Rad (data[0]) mit difference++ um eins vergrößert, und beim rechten Rad (data[1]) mit difference-- um eins verringert.
Somit hast du direkt die Differenz der Tik's beider Räder. Hier muss somit links und rechts nicht mehr verglichen werden.
Im Asuro-Buch Band II wird dieses Vorgehen damit begründet, dass der Inhalt in der Variablen difference deshalb nie größer als 255 bzw. kleiner als -255 werden kann, da bei einem Wert von 255 in difference die Programm-Zeile "MotorSpeed (255 - difference, 255);" ja der linke Motor auf alle Fälle zum stehen kommt (255-255=0), und somit auf dieser Motorseite keine weiteren Tik's mehr kommen.
Aber der rechte Motor fährt mit 255 weiter. Er liefert somit Tik's, und die rechte Seite verringert ja bei Tik's mit difference--; nun den Wert in difference wieder.
Irgendwann ist der Wert wieder so klein, dass "MotorSpeed (255 - difference, 255);" den linken Motor wiederbelebt, und nun geht es eben mit beiden Motoren weiter.
So, ich hoffe dass dies noch mal ein kleines bisschen mehr Durchblick gebracht hat. Auf alle Fälle hast du ja schon mehr als der Prof. (Hoffentlich liest er jetzt nicht mit.)
Bei mir hat es recht lange gedauert, bis ich beim Asuro ein bisschen Durchblick hatte. Ich denke mal, das ich mittlerweile aber immerhin schon 200 mit dem Asuro fahren darf.
Warum dein Asuro nun aber mit den 255'er-Werten anstatt den 155'ern nicht klar kommt, ist mir aber nun auch nicht klar. (Manche sagen: Der Durchblick fehlt.)
Aber immerhin ist kein Zahnrad kaput.
Gruß Sternthaler
Lesezeichen