PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auf Tastendruck reagieren...



Nix_Blicker
17.09.2008, 17:50
Hallo,
ich habe ein kleines Programm geschrieben, nur tut der Asuro nicht was ich will. Er reagiert einfach nicht wenn ein Taster gedrückt wird...
Hier das Programm, vielleicht erkennt ihr einen Fehler ;)



#include "asuro.h"
int main(void) {

unsigned char taste;

Init();

FrontLED(ON);
MotorDir(FWD,FWD);
MotorSpeed(150,140);

taste = PollSwich();
if (taste>0) {MotorSpeed(0,0);}

while(1);
return 0;
}



Verbesserungsvorschläge etc...sind gerne erwünscht^^
Vielen Dank im Voraus.
Mfg

radbruch
17.09.2008, 18:16
Die Tastenabfrage muss IN die Endlosschleife! Außerdem heißt die Funktion PollSwitch()...

hai1991
17.09.2008, 18:19
hallo

das hängt damit zusammen, dass dieses programm nur einmal durchlaufen wird. dh wenn du nicht gleich am anfang einen taster drückst wird er es nie erkennen.

am einfachsten ist es, wenn du einfach eine endlosschleife um die tasterabfrage machtst:


#include "asuro.h"
int main(void) {

unsigned char taste;

Init();
while(1)
{
FrontLED(ON);
MotorDir(FWD,FWD);
MotorSpeed(150,140);

taste = PollSwich();
if (taste>0) {MotorSpeed(0,0);}
}
while(1);
return 0;
}


somit wird der teil, der von der endlosschleife umschlossen ist immer wieder ausgeführt

da aber bei laufendem motor pollswitch öfters falsche werte liefert sollte man es mindestens zwei mal aufrufen:


#include "asuro.h"
int main(void) {

unsigned char taste;

Init();
while(1)
{
FrontLED(ON);
MotorDir(FWD,FWD);
MotorSpeed(150,140);

taste = PollSwich();
if (taste==PollSwitch() && taste>0) {MotorSpeed(0,0);}
}
while(1);
return 0;


hier wird die if-abfrage nur dann TRUE, wenn Pollswitch zweimal hintereinander den selbenwert liefert (taste == PollSwitch()) und taste >0


so, ich glaube das sollte genügen

Nix_Blicker
17.09.2008, 18:38
Vielen Dank, ich werds gleich mal ausprobieren und nochmal bescheid geben obs funktioniert!
Mfg