Menü Schließen

Auf dieser Interpräsens gibt es Beispiele für ferngelenkte, aber auch für autonom fahrende Mobile mit den Mikrocontrollern Arduino und Calliope mini. Hier kommt nun der micro:bit als potenter Dritter dazu.

Wie zu ersehen ist, werden zur Realisierung zwei Controller benötig: einer für das Fahrzeug und ein zweiter als Fernlenkmodul. Die Verbindung wird über Bluetooth hergestellt.

Von oben nach unten: Grove-Buchse mit Batteriehalter, Draht-Steckbrücke, Jumperkabel mit Buchse und Stecker, Batterieclip mit Steckern.

Neben der Hardware für das zweimotorige Fahrzeug (hier der Bauplan) und den beiden Mikrocontrollern werden ein Adapter (hier von der Firma Waveshare), ein Motorentreiber (hier ein L293D), ein Breadboard und Jumperkabel mit Steckern an der einen und Buchsen an der anderen Seite.

Abschnitte eines Breadboards zum Anschließen des Motorentreibers L293D.

Zur Stromversorgung des micro:bit dient ein Batteriehalter für zwei AAA Mignonzellen mit Grove-Buchse, die zu einem Stecker auf dem Mikrocontroller-Board passt. Die Motoren beziehen die Spannung von einem 9V Batterieblock, der über einen Clip in die Schaltung eingebunden wird.

Wer sich bei einem Aufbau mit Jumperkabeln an dem Drahtgewirr stört, dem sei empfohlen, das Breadboard mit einer kleinen Eisensäge in passgenaue Stücke zu zerteilen und diese – wie dargestellt – einzusetzen. Zur Herstellung der Kontakte können dann Draht-Steckbrücken genutzt werden, die nicht nach außen ragen.

Zusammenschau der Teile ohne Fahrgestell (links), Anschlussübersicht des Motorentreibers (rechts)

Die Programmierung gelingt – wie im vorigen Beitrag bereits ausgeführt – mit dem Editor unter <https://makecode.microbit.org>. Hier der Programmcode:

Programmcode für den Controller auf dem Fahrzeug (links) und dem zum Fernsteuern (rechts).

Der Blockcode (oben) in JavaScript (unten):

radio.onReceivedNumber(function (receivedNumber) {
    if (receivedNumber == 0) {
        pins.analogWritePin(AnalogPin.P1, 512)
        pins.digitalWritePin(DigitalPin.P8, 0)
    }
    if (receivedNumber == 1) {
        pins.digitalWritePin(DigitalPin.P1, 0)
    }
    if (receivedNumber == 2) {
        pins.analogWritePin(AnalogPin.P2, 512)
        pins.digitalWritePin(DigitalPin.P12, 0)
    }
    if (receivedNumber == 3) {
        pins.digitalWritePin(DigitalPin.P2, 0)
    }
})
radio.setGroup(1)
radio.setTransmitPower(7)
radio.setGroup(1)
radio.setTransmitPower(7)
basic.forever(function () {
    if (input.buttonIsPressed(Button.A)) {
        radio.sendNumber(0)
    } else {
        radio.sendNumber(1)
    }
    if (input.buttonIsPressed(Button.B)) {
        radio.sendNumber(2)
    } else {
        radio.sendNumber(3)
    }
})
Programmcode für den Controller auf dem Fahrzeug (links) und dem zum Fernsteuern (rechts).