ok danke mach ich
also was schon mal nicht geht ist while(1);{...
an dieser stelle wird er hängen bleiben. while(1); ist eine endlosschleife. besser gehts so:
while(1){
Hier rein kommen die Anweisungen die immer wieder wiederholt werden sollen
}
sälbstverständlich werden diese anweisungen dann bis ewig wiederholt. es hilft also auch nix, eine zweite while(1) schleife unten drunter zu schreiben. du musst alle anweisungen da rein packen.
fang mal an mit einem programm, das nur auf die taster reagiert und meinetwegen die leds anschaltet. dann nimmst du als zweite schwoerigkeitsstufe die motoren dazu... und immer so weiter. das ist der beste (und eigentlich auch einzige) weg das zu lernen: schritt für schritt.
meld dich wenn du noch fragen hast!
ok danke mach ich
Was hällst du erstmal davon?
[/code]Code:#include "asuro.h" int main(void) { unsigned char ktaster; init(); StatusLED(GREEN) MotorDIR(FWD;FWD); MotorSpeed(200,200); while(1){ ktaster=Pollswitch(); Pollswitch(); if (ktaster>0) {StatusLED(RED);} else {StatusLED(GREEN);} } return 0; }
sollte ich die "Pollswitch();" Abfrage vllt noch öfters machen?
(1) Init() statt init()
(2) MotorDir() statt MotorDIR()
wenn du die PollSwitch Abfrage öfter machst, ist das risiko eines falschen wertes kleiner. 3-4 mal helfen eigentlich, 10x geht auf nummer sicher(in einer schleife), braucht aber auch mehr zeit.
es wäre einfacher, wenn du in der if abfrage einfach die varible switched nimmst
die wird von nem interrupt gesetzt.
allerdings musst du daran denken, sie nach dem was der asuro machen soll wen der schalter gedrückt wurde, wieder auf 0 zu setzen.
beispiel:
if(switched=1){
hier kommt das hin was er machen soll
switched=0;
}
ahem nur ein kleiner hinweis.
es muss heise
if(switched==1) {
}
alternativ kann man auch einfach
if(switched) {
}
schreiben
Ähm ich weiß nicht ob ich das jezt richtig verstanden habe aber ich hoffe dass das so richtig ist.
Code:#include "asuro.h" int main(void) { unsigned char ktaster; Init(); StatusLED(GREEN) MotorDir(FWD;FWD); MotorSpeed(200,200); while(1){ ktaster=Pollswitch(); Pollswitch(); if(switched==1){ {StatusLED(RED);} else {StatusLED(GREEN);} switched=o } return 0; }
Lesezeichen