Menü Schließen

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.

Jumperkabel mit Stift und Buchse
  • ü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");
  }
}

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.

HC-05MotortreiberBreadboardMotor mit RadJumperkabelNano5-Tasten-Keyboard

Nach oben