so, hi nochmal.
also vielen dank für die tipps.
das klappt jetzt so, wie gewollt.
hier der code des gesamten programms:
Code:
#include "asuro.h"
int main(void)
{
Init();
EncoderInit();
while(1){
if (taster()!=0) {
BackLED(ON,ON);
StatusLED(RED);
wenden(90,'r');
} else {
BackLED(OFF,OFF);
StatusLED(GREEN);
fahren();
}
}
while (1);
return 0;
}
int taster(void)
{
int t1,t2;
while(1) {
t1=PollSwitch();
t2=PollSwitch();
if ((t1==t2)&&(t1==0b000001)) { return 6; }
else if ((t1==t2)&&(t1==0b000010)) { return 5; }
else if ((t1==t2)&&(t1==0b000100)) { return 4; }
else if ((t1==t2)&&(t1==0b001000)) { return 3; }
else if ((t1==t2)&&(t1==0b010000)) { return 2; }
else if ((t1==t2)&&(t1==0b100000)) { return 1; }
else if ((t1==t2)&&(t1!=0b000001)&&(t1!=0b000010)&&(t1!=0b000100)&&(t1!=0b001000)&&(t1!=0b010000)&&(t1!=0b100000)&&(t1!=0b000000)) { return 7; }
else { return 0; }
}
}
void wenden(int grad, char richtung)
{
int degree=0;
char dir;
degree=grad;
dir=richtung;
if ((degree>=0)&&(degree<120)) {
degree=degree*84;
degree=degree/100;
}
else if ((degree>120)&&(degree<240)) {
degree=degree*92;
degree=degree/100;
}
else if ((degree>240)&&(degree<=360)) {
degree=degree*98;
degree=degree/100;
}
if (dir=='r') { BackLED(OFF,ON); }
else if (dir=='l') {
BackLED(ON,OFF);
degree=degree*(-1);
}
Go(-80,200);
Turn(degree,200);
BackLED(OFF,OFF);
}
void fahren(void)
{
Go(10,120);
}
jetzt ist es allerdings so, dass asuro immer ein kleines stückchen fährt (halt die 10, die ich bei fahren() angegeben hab) und dann aber kurz pausiert.
ich dachte eigentlich nicht, dass das abfragen der taster und was da noch dazwischen passiert so lang dauert, dass keine flüssige fahrt zustande kommt...
was allerdings noch ein viel größeres problem ist, ist dass wenn ein taster gedrückt ist, er nur anfängt rückwärts zu fahren. er fährt und fährt und fährt rückwärts aber er bleibt nicht mehr stehen und wendet auch nciht.
und das obwohl meine wenden() funktion jetzt hinhaut. (hab sie mit verschiedensten fällen getestet.
ich kann mir nicht erklären woran das liegt...
kann mir wer helfen?!
danke schonmal.
Lesezeichen