Das meine ich.Code:#include "asuro.h"
int main(void)
{
int i;
int k=0;
i=0;
int l;
l=1;
Init();
while(1)
{
while(1)
{
if (PollSwitch()>1) i=1;
if(i==0)
{
MotorDir(FWD,FWD);
MotorSpeed(200,210);
}
else
{
MotorDir(RWD,RWD);
MotorSpeed(150,160);
Sleep(250);
k++;
}
if(k>500)
{
MotorSpeed(0,0);
break;
}
}
while(1)
{
if(l<300)
{
MotorDir(FWD,RWD);
MotorSpeed(120,120);
l++;
Sleep(250);
}
else
{
MotorSpeed(0,0);
i=0;
k=0;
l=1;
break;
}
}
}
return 0;
}
Er reagiert sicher nicht auf Sichtkontakt. Die Taster sind nur Mechanische Schaltern. Er macht eine irre. Die Motoren stören die Tastermessung uber die Bordspannung beim Fahren. Die taster K6, neben den Grosse Schalter liefert den wert 1. K5 liefert 2, und ist in deinem fall auch verirrt War genommen.
Die (Programmierbare) Lösung ist 2 mal oder mehr ein Pollswitch messung zu machen, aber das in 2 (oder mehr) verschiedene Variabelen zu speichern. Danach mit ein if-befehl abfragen ob die (beider) Variabelen gleich sind und auch nicht nul (0). Sind sie das sind kann man die Einzelne Tastern aus dem wert Berechnen. Sind die werten nicht gleich dann soll das Programm nichts machen, nur wieder anfangen mit eine neue Pollswitch anruf.
Code:unsigned char t1, t2;
t1=0;
t2=0;
...
while(1)
{
t1=PollSwitch(); // Erste Taster Messung
t2=PollSwitch(); // Zweiter Messung
if ((t1=t2) && (t1>0)) i=1; //Ist die Tastenmessung gleich oder stabil? und ist irgendeiner Taster bemerkt? ! Moebious ignorierte den Taster K6 mit >1
if(i==0) // Kein Taster Bemerkt, Vorwärts!
{
MotorDir(FWD,FWD);
MotorSpeed(200,210);
}
else // Taster Bemerkt. Rückfahrt!
{
MotorDir(RWD,RWD);
MotorSpeed(150,160);
Sleep(250);
k++;
}
if(k>500) // Warteschleife, 500 mal reagiert auf Taster Erkennung. Nun Reichst!
{
MotorSpeed(0,0);
break;
}
...