Hallo zusammen,
ihr habt beide Recht und ein bisschen Unrecht.
Das Init() ist auf alle Fälle lebenswichtig für den Asuro.
Allerdings sollte das while(1) vor dem letzten return 0 schon drin bleiben.
Nur muss dann noch ein ; dahinter geschrieben werden, damit es das tut was es da soll.
Es ist nur ein 'Not-Stop' für das Programm für den Fall, dass der eigentlich laufende Teil mal aus der Schleife 'entwischt'. Dann kommt das Program nämlich NICHT zum return. Denn wohin soll es zurückspringen? Niemand weiss was so ein Controler dann machen wird. (Nur dummes Zeug wird das sein
)
Ich würde es somit so schreiben: (Das geht am besten mit [ code] vor dem Code und [ /code ] hinter dem Code. Aber die Leerzeichen in der Klammer weglassen.)
Code:
#include "asuro.h"
int main(void)
{
Init ();
while (1)
{
if (PollSwitch () < 6)
{
MotorDir (FWD, FWD);
MotorSpeed (150, 150);
StatusLED (GREEN);
}
else
{
MotorDir (BREAK, BREAK);
MotorSpeed (0, 0);
StatusLED (RED);
}
}
while (1);
return 0;
}
Und nun zur Funktion.
Ich tippe darauf, dass das Init() von mtzE schon alles gerichtet hat.
Wenn aber noch nichts läuft:
Die Status-LED wird ja vom Programm auf grün gesetzt und der Asuro sollte mit MotorSpeed(150,150); fahren.
Hier kann man als erstes mal die 150 auf 200 erhöhen. Mein Asuro fährt bei 150 auch nicht an. Manch anderer Asuro aber schon unter 150.
Und das PollSwitch () < 6 schränkt natürlich die Taster ein die zum Stop führen. Taster 1, 2, 3 (sollten ja) als Wert 1, 2, 4 liefern. Erst Taster 4 würde einen Wert von 8 liefern und damit zum Stop-Teil im Programm führen. (Taster von vorne von links nach rechts gezählt. Könnte auch anderes rum sein
)
Viel Erfolg
Gruß Sternthaler
Lesezeichen