Hey,
ich würde gerne meinen Roboter per Bluetooth mit 'W' 'A' 'S' 'D' steuern können.
Das funktioniert auch bereits allerdings nicht so ganz wie ich mir das vorstelle.
Ich drücke 'W' und der Robo rattert los, allerdings sollte er nur so lange fahren, wie auch die Taste 'W' gedrückt ist.
if 'W' - go forward - else stop : funktioniert nicht so ganz weil 'kein Tasten druck' nicht unter else fällt.
if else
Switch CaseCode:#include <AFMotor.h> char value; AF_DCMotor motorL(1); AF_DCMotor motorR(2); void setup(){ Serial1.begin(19200); motorR.setSpeed(255); motorL.setSpeed(245); motorR.run(RELEASE); motorL.run(RELEASE); } void loop(){ if (Serial1.available() >0){ value = Serial1.read(); } if (value == 'w'){ motorR.run(FORWARD); motorL.run(FORWARD); } else if (value == 'a'){ motorR.run(FORWARD); motorL.run(BACKWARD); } else if (value == 's'){ motorR.run(BACKWARD); motorL.run(BACKWARD); } else if (value == 'd'){ motorR.run(BACKWARD); motorL.run(FORWARD); } else{ motorR.run(RELEASE); motorL.run(RELEASE); } }
Wenn keine Eingabe erfolgt dürfte doch diese if Bedingung false sein oder?Code:#include <AFMotor.h> char value; AF_DCMotor motorL(1); AF_DCMotor motorR(2); void setup(){ Serial1.begin(19200); motorR.setSpeed(255); motorL.setSpeed(245); motorR.run(RELEASE); motorL.run(RELEASE); } void loop(){ if (Serial1.available()){ value = Serial1.read(); } switch(value){ case 'w': motorR.run(FORWARD); motorL.run(FORWARD); break; case 'a': motorR.run(FORWARD); motorL.run(BACKWARD); break; case 's': motorR.run(BACKWARD); motorL.run(BACKWARD); break; case 'd': motorR.run(BACKWARD); motorL.run(FORWARD); break; default: motorR.run(RELEASE); motorL.run(RELEASE); } }
Allerdings kommt er hier nur ins stockern.
Code:if (Serial1.available() >0){ value = Serial1.read(); } else{ motorR.run(RELEASE); motorL.run(RELEASE); }
Bitte um Rat
Lesezeichen