PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problrm mit while Schleife



Möööp
29.10.2009, 13:09
Hallo miteinander,

ich bin neu hier und hab mit meienm Asuro ein kleines Problemchen un dich weiß nicht an was es liegt, hab schon ziemlich alles versucht aber irgendiwe gehts nich. hab nur das wichtigste aus dem code kopiert, das andere ist alles asukommentiert in meinem Code um jeweils die neu funktion zu testen.

while(1)
{




while (PollSwitch==0)
{
MotorDir(FWD,RWD); //drehen bis Linie gefunden ist.
MotorSpeed(120,120);
Msleep(2000);
}




MotorDir(FWD,FWD);
MotorSpeed(200,200);



}


return 0;

das Problem ist, ich hab keine Ahnung warum der nicht in die untergeordnete while schleife geht, normalerweise müsste er sich ja die ganze zeit im Kreis drehen, tut er aber nicht, ich bin mir auch sicher dass kein Taster gedrückt ist.

radbruch
29.10.2009, 13:23
Hallo

PollSwitch() "lügt" gelegentlich, vor allem, wenn gleichzeitig die Motoren laufen stimmt der zurückgelieferte Wert nicht immer. Ein Ansatz das zu lösen wäre mehrere Werte mit PollSwitch() ermitteln und diese dann auf Gleichheit zu überprüfen:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=36760
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=38949

Wenn es keine Rolle spielt, welche Taste gedrückt wurde, kann man den Tastenpin auch digital abfragen:

if(!(PINC & (1<<PC4))) ...

(aus http://www.arexx.com/forum/%76iewtopic.php?p=1319#p1319)

Wichtig sind natürlich saubere Lötstellen an den Tastern und die richtigen Widerstände (R23-30, 32). Wenn gar nichts mehr hilft kann man die Formel am Ende der Funktion PollSwitch() editieren (in asuro.c) und damit die Tasten kalibrieren:

http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Tasten

Gruß

mic