ist es nicht so, dass am anfang
hier testest du ob schalter gedrückt (10 zyclen)!!for(i=0;i<10;i++)
{
PollSwitch();
}
t=PollSwitch();
dann gehst du in dei while
und in der while testest du den taster.while (1) {
if (t>=1) {
..schnipp...
} else {
MotorDir (FWD,FWD);
MotorSpeed(160,160);
}
nur wird in der while nie der taster aktualisiert und somit fährt asuro immer gerade aus ....
es sei denn, der taster würde gedrückt werden bevor!!!!!!! er losfähr.
hmm das hat martin schon geschrieben...
aber in der schleife...
teste mal
aber sag mal wass soll da genau passieren?Code:#include "asuro.h" int main(void) { Init (); int cm90=16.5; int s1=10; int s2=20; int i, t; while (1) { for(i=0;i<10;i++) { PollSwitch(); } t=PollSwitch(); if (t>=1) { //Scahlter wurde gedrückte Encoder_Init(); while (encoder[LEFT]<=cm90*3) { MotorDir(FWD,FWD); MotorSpeed(160,0); } cm90=0; //warum setzt du den cm90 auf 0? MotorDir(BREAK,BREAK); MotorSpeed(0,0); } else { MotorDir (FWD,FWD); MotorSpeed(160,160); } } return 0; }
taste gedrückt und dann....
1. while in if abfrage -->drehe rechts
dann geradeausfahren..... (2. while)while (encoder[LEFT]<=cm90*3)
{
MotorDir(FWD,FWD);
MotorSpeed(160,0); //rechts drehen
}
dann setzt du cm90 auf 0 damit ist die 3. while unsinnig
danach sieht es für mich so aus als ob die s2 und s1 viel kleiner als encoder -->while wird nicht gefahrencm90=0;
while (encoder[RIGHT]<=cm90*3)
{
MotorDir(FWD,FWD);
MotorSpeed(0,160);
}
gruß
ralf







Zitieren

Lesezeichen