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.
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.
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.
Die Programmierung gelingt – wie im vorigen Beitrag bereits ausgeführt – mit dem Editor unter <https://makecode.microbit.org>. Hier der Programmcode:
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) } }) |