Cool danke ich glaube das ist die Lösung auf mein Problem O:)
Ich probiers gleich einmal aus 8)
MFG Kieselstein
Druckbare Version
Cool danke ich glaube das ist die Lösung auf mein Problem O:)
Ich probiers gleich einmal aus 8)
MFG Kieselstein
Oh man ich komme mir richtig bescheuert vor -.-
Ich habe die Verzögerung jetzt zwar hinbekommen jedoch macht der ASURO nicht das was ich will:
Setzt man anstatt MotorDir und MotorSpeed wie oben bei dir StatusLED ein funktionierts, aber ansonsten i-wie nicht -.- Das ergibt für mich keinen Sinn aber es ist nunmal so^^Code:#include "asuro.h"
unsigned int i;
int main(void)
{
Init();
while(1)
{
if(PollSwitch() == 0)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
else
{
MotorDir(RWD,RWD);
MotorSpeed(150,150);
for(i=0; i<4000; i++) Sleep(72);
}
}
return(0);
}
Der ASURO fährt gleich von anfang an rückwärts und hört dann nicht mehr auf, nicht einmal wenn PollSwitch aktiv ist -.-
Ich hab ALLES mögliche ausprobiert und nie hat es funktioniert ich weiß nich mehr weiter :'(
MFG Kieselstein
Hi Kieselsteín,
das liegt wahrscheinlich daran, dass Pollswitch von Anfang an aktiv ist.
Ich empfehle die folgendes an Anfang einzufügen:
Damit ist sichergestellt dass alle Taster nicht logisch "gedrückt" sind.Code:for(i=0;i<10;i++)
{
PollSwitch();
}
Danke für den Tipp!
Jedoch fährt mein ASURO jetzt nur noch geradeaus xD
Aber das Problem ist schon richtig. ASURO erkennt PollSwitch von Anfang an aktiv oder inaktiv an und entscheidet sich dann für einen Weg in der IF-Anweisung.
Ich hasse diese verdammte PollSwitch-Anweisung^^
MFG Kieselstein
hallo kieselstein,
versuch doch mal das ergebnis von PollSwitch() in eine variable zu speichern und ein zweits mal auf zu rufen, um fehler zu vermeiden. etwa so:
durch den zwiemaligen aufruf werden fehler ausgefiltetCode:do
{
t=PollSwitch();
}while(t != PollSwitch() );
in deinem programm musst du natürlich danach auch mit t abfragen
Code:if( t == 0) //...
JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!
DANKE hai1991!!!!
nachdem ich heute bestimmt 5 stunden an meinem ASURO rumexperimentiert habe funktioniert es endlich durch deinen Vorschlag :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
HIER DIE WUNDERBARE LÖSUNG:
Du glaubst gar nicht wie dankbar ich dir bin!Code:#include "asuro.h"
unsigned int i;
unsigned int t;
int main(void)
{
Init();
while(1)
{
do {
t=PollSwitch();
if(t == 0)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
else
{MotorDir(BREAK,RWD);}
{MotorSpeed(150,150);}
{for(i=0; i<1500; i++) Sleep(72);}
}
while(t != PollSwitch() );
}
return 0;
}
DANKE DANKE DANKE^^
ich hätte es zwar etwas anders gedacht, aber wenn es so auch funktioniert ist es auch schon
mein vorschlag wäre so gewesen:
die do-while schleife habe ich eingebaut, weil PollSwitch() bei laufenden Motoren manchmal fehlerhafte ergebnisse liefert, diese sind aber selten zweimal hinter einander. daher braucht man nur zu warten bis man zwei mal den selben wert bekommt, und dann mit dem normalen programm fortsetzenCode:#include "asuro.h"
unsigned int i;
unsigned int t;
int main(void)
{
Init();
while(1)
{
do {
t=PollSwitch();
}while(t != PollSwitch() ); //diese schleife wird erst beendet, wenn PollSwitch zwei mal hinter einander den selben wert liefet
if(t == 0) //überprüfung ob ein taster gedrückt ist
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
else
{MotorDir(BREAK,RWD);}
{MotorSpeed(150,150);}
{for(i=0; i<1500; i++) Sleep(72);}
}
return 0;
}
weiter hin noch viel spaß und erfolg beim experimentiern / spielen mit asuro