Hi,
bitte nicht verwechseln, das ist das C Programm und kein C++ Script.
Zum Programm selbst (ähnelt sich die Syntax nicht sowieso?):
"links" und "rechts" sind Variablen, die die Geschwindigkeit der Motoren angeben.
120 ist dabei ein guter Wert, der einfach eine bestimmte Geschwindigkeit definiert.
Und in dem von dir geposteten Teil, wird eben diese Geschwindikeit anhand der Abweichungen der Sensoren eingestellt.
Angenommen der linke Fototransistor hat den Wert 100, der rechte 150. (rein fiktive Werte)
diffl wäre dann -50, diffr wäre 50.
Die Geschwindigkeit des linken Motors wäre dann:
120-(50*3)=-30.
Rechts wäre: 120-(-50*3)=270.
Danach wird allerdings abgefragt: Falls einer der beiden Werte größer als 120 ist, wird er auf 120 gesetzt.
Der rechte Motor dreht also mit "120", der linke mit "-30".
Achtung! Diese Werte werden wahrscheinlich NIE erreicht, die beiden Transistoren haben fast immer dieselben Werte (sie liegen ja direkt nebeneinander) und sobald ein Wert abweicht wird sofort korrigiert.
Dennoch, die Motoren werden jetzt demnach eingestellt, der rechte Motor dreht also schneller als der linke, was eine Linkskurve zur Folge hätte. Das muss auch so sein, immerhin war der Wert des linken Transistors kleiner als der des rechten. Und wie du aus meiner Befehlsliste entnehmen kannst (siehe Signatur) bedeutet ein kleiner Wert gleich "mehr schwarz", was bedeutet das der Asuro von der Linie abkommt und demnach nach links korrigieren muss.
Hoffe das war enigermaßen verständlich![]()
Lesezeichen