schleicha
07.12.2008, 19:05
Hallo,
ich habe mein Asuro erfolgreich auf Bluetooth umgebaut, habe nun ein Programm geschrieben mit er sich über Bluetooth fernsteuern lässt. Dieses funktioniert auch ohne Problem :), allerdings hat es eine Schönheitsfehler.
Wenn ich eine Taste drücke, dann fährt er so lange in die selbe Richtung, bis ich eine andere Taste drücke oder "q" um zu stoppen. Ich möchte allerdings, dass er so lange fährt wie man die Taste gedrückt, und sobald man sie los lässt soll er anhalten.
Hab schon versucht nach jeder if-Bedingung den Speicher "empfangen" wieder auf 0 zu setzen "empfangen [0] = 0;". Allerdings ändert das nichts.
Hat jemand eine Idee wie ich das machen kann?
#include "asuro.h"
int main(void)
{
unsigned char empfangen[0]="000";
Init();
/* Menü Anzeige */
{
SerPrint("\n\r");
SerPrint("Fernsteruerung:\n\r");
SerPrint("[w] => Geradeaus fahren\n\r");
SerPrint("[s] => Rueckwaerts fahren\n\r");
SerPrint("[a] => Linkskurfe\n\r");
SerPrint("[d] => Rechtskurfe\n\r");
SerPrint("[q] => Stopp\n\r");
}
while(1)
{
SerRead(empfangen, 1, 2); //1 Zeichen über UART einlesen, TimeOut 2ms
if (empfangen [0] == 'w') //Geradeaus fahren
{
MotorSpeed(205,200);
MotorDir(FWD,FWD);
}
if (empfangen [0] == 's') //Rückwärts fahren
{
MotorSpeed(130,120);
MotorDir(RWD,RWD);
}
if (empfangen [0] == 'a') //Linkskurfe
{
MotorSpeed(100,185);
MotorDir(FWD,FWD);
}
if (empfangen [0] == 'd') //Rechtskurfe
{
MotorSpeed(190,100);
MotorDir(FWD,FWD);
}
if (empfangen [0] == 'q') //Stopp
{
MotorDir(BREAK,BREAK);
}
}
return 0;
}
Vielen Dank für eure Hilfe!
Gruß Schleicha
ich habe mein Asuro erfolgreich auf Bluetooth umgebaut, habe nun ein Programm geschrieben mit er sich über Bluetooth fernsteuern lässt. Dieses funktioniert auch ohne Problem :), allerdings hat es eine Schönheitsfehler.
Wenn ich eine Taste drücke, dann fährt er so lange in die selbe Richtung, bis ich eine andere Taste drücke oder "q" um zu stoppen. Ich möchte allerdings, dass er so lange fährt wie man die Taste gedrückt, und sobald man sie los lässt soll er anhalten.
Hab schon versucht nach jeder if-Bedingung den Speicher "empfangen" wieder auf 0 zu setzen "empfangen [0] = 0;". Allerdings ändert das nichts.
Hat jemand eine Idee wie ich das machen kann?
#include "asuro.h"
int main(void)
{
unsigned char empfangen[0]="000";
Init();
/* Menü Anzeige */
{
SerPrint("\n\r");
SerPrint("Fernsteruerung:\n\r");
SerPrint("[w] => Geradeaus fahren\n\r");
SerPrint("[s] => Rueckwaerts fahren\n\r");
SerPrint("[a] => Linkskurfe\n\r");
SerPrint("[d] => Rechtskurfe\n\r");
SerPrint("[q] => Stopp\n\r");
}
while(1)
{
SerRead(empfangen, 1, 2); //1 Zeichen über UART einlesen, TimeOut 2ms
if (empfangen [0] == 'w') //Geradeaus fahren
{
MotorSpeed(205,200);
MotorDir(FWD,FWD);
}
if (empfangen [0] == 's') //Rückwärts fahren
{
MotorSpeed(130,120);
MotorDir(RWD,RWD);
}
if (empfangen [0] == 'a') //Linkskurfe
{
MotorSpeed(100,185);
MotorDir(FWD,FWD);
}
if (empfangen [0] == 'd') //Rechtskurfe
{
MotorSpeed(190,100);
MotorDir(FWD,FWD);
}
if (empfangen [0] == 'q') //Stopp
{
MotorDir(BREAK,BREAK);
}
}
return 0;
}
Vielen Dank für eure Hilfe!
Gruß Schleicha