Die diesem Kapitel zugrunde liegende Idee ist, ein programmierbares Fahrzeug fernzusteuern. Mit dem Micro:bit oder einem Board der Calliope gGmbH ist das gut möglich, weil darauf Bluetooth-Technik und zwei Tasten integriert sind.
Beim Arduino wird das Manko mit Bluetooth-Modulen und dem 5-Tasten-Keyboard aus dem vorausgegangen Kapitel behoben. Alle benötigten Teile – außer den Jumperkabeln – zeigt die Abbildung unten.

Der Zusammenbau des Fahrzeugs kann so erfolgen: Motoren mit Kabeln ausstatten. Dazu Stifte der Jumperkabel in das Loch der Kontaktbleche stecken und mit Kleber fixieren (Abbildung unten links).

Damit die anderen Enden randscharf in die Löcher des Motorentreiber passen, empfiehlt es sich (wie oben rechts gezeigt) die Kappe am anderen Ende (wie unten gezeigt) abzuziehen und das metallische Ende mit einer Flachzange zusammenpressen oder mit einem Hammer flachklopfen.
Anschließend die Motoren und Tischtennisballhälfte (wie in der ersten Skizze ersichtlich) mit Heißkleber auf bzw. unter dem Brettchen fixieren.
In der DIY-Szene werden beim Anschließen des Bluetooth-Moduls unterschiedliche Wege beschritten:
- über digitale Pins mit und ohne Spannungsteiler
- direkt über RX/TX
In der Zeichnung unten ist das HC-05 Modul über einen Spannungsteiler und über die Pins 3 und 4 realisiert. Sowohl das HC-05 als auch das 5-Tasten Keybord beziehen ihren Strom von 5V Pin des Nano. GND kann direkt von der Batterie oder einem beliebigen GND Pin am Nano abgegriffen werden.

Hier noch die nötige Programmierung für das Steuerteil.
#include <SoftwareSerial.h>
#define rxPin 3
#define txPin 4
int button;
int value = 0;
#define nobutton 0
#define button1 1
#define button2 2
#define button3 3
#define button4 4
#define button5 5
int readbutton()
{
value = analogRead(A0);
if (value > 1000) //Wert 1023
return nobutton;
if (value < 20) //Wert bei 10
return button1;
if (value < 180) //Wert bei 140
return button2;
if (value < 370) //Wert bei 330
return button3;ür das Steuerteil
if (value < 540) //Wert bei 500
return button4;
if (value < 780) //Wert bei 740
return button5;
}
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);
int state = 20;
void setup() {
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
mySerial.begin(38400);
}
void loop() {
if (mySerial.available() > 0) {
state = mySerial.read();
}
button = readbutton();
if (button == 0)
mySerial.write("0");
if (button == 1) {
mySerial.write("1");
}
if (button == 2) {
mySerial.write("2");
}
if (button == 3) {
mySerial.write("3");
}
if (button == 4) {
mySerial.write("4");
}
if (button == 5) {
mySerial.write("5");
}
}
Im Gegensatz zum Steuerteil sind die seriellen Schnittstellen beim Fahrzeug (Abbildung unten) direkt über RX und TX und ohne Spannungsteiler mit dem HC-05 verbunden.

Und hier die zum Fahrzeug passende Programmierung:
#include <SoftwareSerial.h>
SoftwareSerial mySerial();
int state = 20;
int buttonState = 0;
void setup() {
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(6, OUTPUT);
Serial.begin(38400);
}
void loop() {
if (Serial.available() > 0) {
state = Serial.read();
}
if (state == '1') {
analogWrite(11, 150);
digitalWrite(10, LOW);
analogWrite(9, 150);
digitalWrite(6, LOW);
state = 0;
}
if (state == '2') {
digitalWrite(11, LOW);
digitalWrite(10, LOW);
analogWrite(9, 150);
digitalWrite(6, LOW);
state = 0;
}
if (state == '3') {
analogWrite(11, 150);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(6, LOW);
state = 0;
}
if (state == '4') {
digitalWrite(11, LOW);
analogWrite(10, 150);
digitalWrite(9, LOW);
analogWrite(6, 150);
state = 0;
}
/*if (state == '5') {
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(6, LOW);
state = 0;
}*/
else if (state == '0') {
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(6, LOW);
state = 0;
}
}
Viel Erfolg beim Ausprobieren! Sollten sich wider Erwarten die HC-05-Module nicht pairen, findet sich hier Hilfe.
Links zu den Bezugsquellen
HC-05 — Motortreiber — Breadboard — Motor mit Rad —Jumperkabel — Nano — 5-Tasten-Keyboard