Hallo,
du musst die If-Abfrage in die while-Schleife tun, sonst fragt er nur beim Starten die Taster ab und bleibt danach in der Endlosschleife.
Grüße,
oernie97
Hallo,
du musst die If-Abfrage in die while-Schleife tun, sonst fragt er nur beim Starten die Taster ab und bleibt danach in der Endlosschleife.
Grüße,
oernie97
Ja das hab ich jetzt schon gemacht - jedoch auch ohne Ergebnis - er fährt einfach nicht los:
Code:#include "asuro.h" int i; int main(void) { Init(); while(1); if (PollSwitch()==0 && PollSwitch()==0 && PollSwitch()==0 && PollSwitch()==0) { MotorDir(FWD,FWD); MotorSpeed(200,200); BackLED(ON,ON); StatusLED (GREEN); } else { MotorDir(BREAK,BREAK); MotorSpeed(0,0); BackLED(OFF,OFF); StatusLED(RED); MotorDir(FWD,BREAK); MotorSpeed(100,0); } return(0); }
Ich meine _in_ die while-Schleife (bedeutet, das Semikolon hinter while (1) wird zu einer geöffneten geschweiften Klammer und vor return(0); wird eine geschlossene geschweifte Klammer eingefügt).
Ups mein Fehler!
Dieser Code hier funktioniert. Zuerst fährt er brav vorwärts, bei Kollision (also Drücken eines Kollisionsschalter) dreht sich auch ein Rad nach hinten. Jedoch bleibt er mir hin- und wieder in einer Schleife stecken, in der sich beide Räder nach vorne drehen oder zB auch nur eines nach hinten. Dann bleibt er mal komplett stehen und das Status-LED beginnt zu blinken. Einmal hat sich sogar das untere LED eingeschaltet, als er stehengeblieben ist.
Was passiert da?
Code:#include "asuro.h" int i; int main(void) { Init(); while(1){ if (PollSwitch()==0 && PollSwitch()==0) { MotorDir(FWD,FWD); MotorSpeed(200,200); BackLED(ON,ON); StatusLED (GREEN); } else { MotorDir(BREAK,BREAK); MotorSpeed(0,0); BackLED(OFF,OFF); StatusLED(RED); MotorDir(RWD,BREAK); MotorSpeed(150,0); } } return(0); } /*for(i=0; i<2000; i++) Sleep(72);*/
"Dann bleibt er mal komplett stehen und das Status-LED beginnt zu blinken."
Halt dann mal den Transceiver über den asuro und schaue ins Terminalfenster. Vermutlich erscheint dann endlos "VLVLVLVLVL..". Das würde für Unterspannung (Voltage Low) stehen und sich aus der Belastung der Akkus beim Fahren und auch beim schnellen Richtungswechsel der Antriebe erklären. Spannungseinbrüche könnten auch die anderen seltsamen Erscheinungen erklären. (Anleitung Seite 29 Kapitel 6.3.3.)
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ok bekomm schöne VLs ausgegeben - Was kann man dagegen tun?
Hab nachdem ich ihn fertiggebaut habe neue Batterien reingegeben - vielleicht sind die auch schon zu schwach...
Muss an den Batterien liegen - hab gerade ein Programm geschrieben, wo er 5 Sekunden geradeausfährt, kurz stehenbleibt und sich dreht und bei jedem Stück und jeder Drehung sehe ich wie er an den Batterien zehrt...
Lesezeichen