Arduino Uno & Bluetooth: Fernsteuerung eines Autos – Schritt-für-Schritt-Anleitung
Komponenten und Materialien
| Bauteil | Menge |
|---|---|
| Arduino UNO | 1 |
| SparkFun Dual H-Bridge Motortreiber L298 | 1 |
Benötigte Werkzeuge und Maschinen
- 3D-Drucker (generic)
Apps und Online-Dienste
- MIT App Inventor 2
- Arduino IDE
Projektbeschreibung
Ich wollte ein Auto fernsteuern und habe verschiedene Möglichkeiten ausprobiert. Schließlich entschied ich mich für eine Bluetooth-Steuerung, besorgte die nötigen Komponenten und schrieb die Software. Dies ist mein zweites Projekt auf Hackster.
Arduino-Code
char buffer[67];
byte Pino02 = 2;
byte Pino03 = 3;
byte Pino04 = 4;
byte Pino05 = 5;
byte Pino06 = 6;
byte Pino07 = 7;
byte Pino12 = 12;
byte Pino13 = 13;
void setup() {
Serial.begin(9600);
Serial.flush();
pinMode(Pino02, OUTPUT);
pinMode(Pino03, OUTPUT);
pinMode(Pino04, OUTPUT);
pinMode(Pino05, OUTPUT);
pinMode(Pino06, OUTPUT);
pinMode(Pino07, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
int index = 0;
delay(100); // Puffer füllen lassen
int numChar = Serial.available();
if (numChar > 65) numChar = 65;
while (numChar--) {
buffer[index++] = Serial.read();
}
splitString(buffer);
}
}
void splitString(char* data) {
Serial.print("Eingabe: ");
Serial.println(data);
char* parameter;
parameter = strtok(data, " ,");
while (parameter != NULL) {
setLED(parameter);
parameter = strtok(NULL, " ,");
}
// Buffer leeren
for (int x = 0; x < 66; x++) {
buffer[x] = '\0';
}
Serial.flush();
}
void setLED(char* data) {
// Vorwärts links
if (data[0] == 'A') {
analogWrite(9, 50); analogWrite(10, 50);
digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
digitalWrite(12, HIGH); digitalWrite(13, LOW);
}
// Vorwärts rechts
if (data[0] == 'C') {
analogWrite(9, 50); analogWrite(10, 50);
digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
digitalWrite(12, HIGH); digitalWrite(13, LOW);
}
// Rückwärts Stufen 1-5
if (data[0] == 'B') { analogWrite(9, 25); analogWrite(10, 25); digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW); digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW); digitalWrite(12, LOW); digitalWrite(13, HIGH); }
if (data[0] == 'M') { analogWrite(9, 75); analogWrite(10, 75); digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW); digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW); digitalWrite(12, LOW); digitalWrite(13, HIGH); }
if (data[0] == 'N') { analogWrite(9, 125); analogWrite(10, 125); digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW); digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW); digitalWrite(12, LOW); digitalWrite(13, HIGH); }
if (data[0] == 'P') { analogWrite(9, 175); analogWrite(10, 175); digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW); digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW); digitalWrite(12, LOW); digitalWrite(13, HIGH); }
if (data[0] == 'L') { analogWrite(9, 225); analogWrite(10, 225); digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW); digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW); digitalWrite(12, LOW); digitalWrite(13, HIGH); }
// Vorwärts Stufen 1-5
if (data[0] == 'D') { analogWrite(9, 25); analogWrite(10, 25); digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH); digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH); digitalWrite(12, HIGH); digitalWrite(13, LOW); }
if (data[0] == 'H') { analogWrite(9, 75); analogWrite(10, 75); digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH); digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH); digitalWrite(12, HIGH); digitalWrite(13, LOW); }
if (data[0] == 'I') { analogWrite(9, 125); analogWrite(10, 125); digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH); digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH); digitalWrite(12, HIGH); digitalWrite(13, LOW); }
if (data[0] == 'K') { analogWrite(9, 175); analogWrite(10, 175); digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH); digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH); digitalWrite(12, HIGH); digitalWrite(13, LOW); }
if (data[0] == 'L') { analogWrite(9, 225); analogWrite(10, 225); digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH); digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH); digitalWrite(12, HIGH); digitalWrite(13, LOW); }
// Stopp
if (data[0] == 'U') {
digitalWrite(Pino02, LOW); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, LOW);
digitalWrite(12, LOW); digitalWrite(13, LOW);
}
// Langsam vorwärts
if (data[0] == 'E') {
analogWrite(9, 50); analogWrite(10, 50);
digitalWrite(Pino02, LOW); digitalWrite(Pino03, HIGH);
digitalWrite(Pino04, LOW); digitalWrite(Pino05, HIGH);
}
// Langsam rückwärts
if (data[0] == 'F') {
analogWrite(9, 50); analogWrite(10, 50);
digitalWrite(Pino02, HIGH); digitalWrite(Pino03, LOW);
digitalWrite(Pino04, HIGH); digitalWrite(Pino05, LOW);
}
}
Gehäuse und Custom Parts
APK-Datei für die Steuerung: arduinoslider2_dxxyKBsRDa.apk
Herstellungsprozess
- Integriertes QR-, RFID- und Temperatur-Verifikations-Zugangskontrollsystem
- Schnelles, zuverlässiges Branderkennungssystem mit Samsung SAMI, Arduino UNO & Raspberry Pi
- Arduino Echtzeituhr für islamische Gebetszeiten bauen
- Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- Zwei Schrittmotoren mit Arduino Nano & Joystick steuern – Einfaches Tutorial
- 8×8 LED-Matrix mit Arduino Uno meistern: Schritt-für-Schritt-Anleitung
- 4x4x4 LED-Würfel mit Arduino Uno & 1Sheeld bauen – Interaktives LED-Projekt
- Bluetooth-fähige 8x8 LED-Matrix mit Scrolltext – Arduino-Projekt
- 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno – Bau, Code & Test