(1)die if abfrage muss in die while schleife rein
(2) so wird der asuro dann (wenn du die if abfrage ind er while schleife drinn hast) zwar an der wand annhalten, aber dann wider gegen die wasn fahren, al swollte er sie durchbrechen
mfg EDH
Hallo,
ich habe mich jetzt einmal daran gemacht einen kleinen Programmcode zu machen. Dieser Programmcode soll dazu dienen das der Roboter normal mit 150 fährt und bei einer Kollision rückwärts fahren soll:
///////////////////////////////////////////
// Asuroprogramm Version 1 // 15.11.2006 //
// Von Jens // Erstentwicklung//
///////////////////////////////////////////
#include "asuro.h"
unsigned char taste;
/////////////////////////////////////////////
int main(void)
{
Init();
taste = PollSwitch();
if (taste>0)
{
MotorDir(RWD,RWD);
MotorSpeed(100,100);
StatusLED(RED);
BackLED(OFF,OFF);
}
else
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
StatusLED(GREEN);
BackLED(ON,ON);
}
while(1);
return 0;
}
So, nach dem ich dieses Programm geschrieben hatte, flashede ich es auf den Asuro. Doch dieser fährt dauernd rückwärts, auch ohne Kollision und auf gar keinen Fall vorwärts! Was ist an diesem Programmcode falsch? .. ist meine Frage.
Danke und MFG
JensD
(1)die if abfrage muss in die while schleife rein
(2) so wird der asuro dann (wenn du die if abfrage ind er while schleife drinn hast) zwar an der wand annhalten, aber dann wider gegen die wasn fahren, al swollte er sie durchbrechen
mfg EDH
Wie mache ich die If-Abfrage in die while-Schleife?
so ungefähr :
mfg EDHCode:#include "asuro.h" unsigned char taste; ///////////////////////////////////////////// int main(void) { Init(); while(1) { taste = PollSwitch(); if (taste>0) { MotorDir(RWD,RWD); MotorSpeed(100,100); StatusLED(RED); BackLED(OFF,OFF); } else { MotorDir(FWD,FWD); MotorSpeed(150,150); StatusLED(GREEN); BackLED(ON,ON); } } return 0; }
Das klappt bei mir nicht jetzt fährt er nur vorwärts aber die Taster machen auf Berührung nichts.(??)
Gruß JensD
(1) vieliecht schreibst du mal konkret was der asruo machen soll?
(2) ruf pollswitch mehrmals hinterneindaner auf
mfg EDH
1. bitte nutze den CODE Button um deinen Programmcode zu posten.
2. Du Musst ein Programm machen, was ungefähr so aussieht:
könnte sein, dass da was nich ganz 100%ig ist, also erstmal durchchecken was der compiler so sagt.Code:int tastegedrueckt=0; int main(void){ init(); While(1){ PollSwitch(); PollSwitch(); //Zum ausschliessen von falschen Werten PollSwitch(); tastegedrueckt=PollSwitch(); if (tastegedrueckt!=0){ //Wenn eine Taste gedrückt wurde... MotorDir(RWD,RWD); MotorSpeed(150,150); //Dann fahre rückwärts. } else{ //ansonsten... MotorDir(FWD,FWD); MotorSpeed(150,150); } return 0; }
Sowie eine taste gedrückt wurde, wird die variable tastegedrueckt nicht mehr 0 sein. (kann aber sein, dass die funktion pollswitch() einen falschen wert ausgibt, dann hast du leider pech...). wenn die variable nicht mehr 0 ist wird er rückwärts fahren. nachteil: er wird dauern wieder vor die wand fahren, weil sowie er ein stückchen rückwärts gefahren ist ist ja die variable wieder 0 und er fährt wieder vorwärts... man könnte natürlich auch noch eine verzögerung mit sleep() einbauen, aber das überlasse ich dir =)
Lesezeichen