/*
Forum: https://forum.arduino.cc/t/bluetooth-car-bewegt-sich-nicht/1379494
Wokwi: https://wokwi.com/projects/430320504783019009
ec2021
2025/05/07
Annahme: Zwei Motoren sind so mit in1 bis in4 verbunden, dass
Motor1 bei in1 HIGH und in2 LOW -> "Vorwärts" dreht
Motor2 bei in3 HIGH und in4 LOW -> "Vorwärts" dreht
Vorwärts-Drehung wird durch die grüne Led, Rückwärts-Drehung durch die rote Led signalisiert.
Vorwärts/Rückwärts/Links/Rechts jeweils in Fahrtrichtung gesehen
Serielle Kommandos:
F -> Forward -> Vorwärts
B -> Backward -> Rückwärts
L -> Left -> Links
R -> Right -> Rechts
S -> Stop -> Stopp
Die Routinen müssen ggf. entsprechend der realen Verdrahtung angepasst werden (oder die
Verdrahtung dem Code ;-) )
*/
#define WOKWI
#include <SoftwareSerial.h>
SoftwareSerial BlueTooth(8, 9);
#define in1 11
#define in2 10
#define in3 5
#define in4 6
char BT_input;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
BlueTooth.begin(9600);
Serial.begin(9600);
Serial.println();
}
void loop() {
#ifdef WOKWI
if (Serial.available()) {
BT_input = Serial.read();
#else
if (BlueTooth.available()) {
BT_input = BlueTooth.read();
#endif
switch (BT_input) {
case 'f':
case 'F':
forward();
break;
case 'b':
case 'B':
backward();
break;
case 'l':
case 'L':
turnLeft();
break;
case 'r':
case 'R':
turnRight();
break;
case 's':
case 'S':
stop();
break;
default:
if (BT_input >= ' ') {
Serial.println(BT_input, HEX);
}
}
}
}
void setInPins(byte val1, byte val2, byte val3, byte val4, char Cmd) {
digitalWrite(in1, val1);
digitalWrite(in2, val2);
digitalWrite(in3, val3);
digitalWrite(in4, val4);
Serial.println(Cmd);
}
void forward() {
setInPins(HIGH, LOW, HIGH, LOW, 'F');
}
void backward() {
setInPins(LOW, HIGH, LOW, HIGH, 'B');
}
void turnLeft() {
setInPins(LOW, HIGH, HIGH, LOW, 'L');
}
void turnRight() {
setInPins(HIGH, LOW, LOW, HIGH, 'R');
}
void stop() {
setInPins(LOW, LOW, LOW, LOW, 'S');
}