Hvordan vi skal få Microbits til å kommunisere over radio.
Eksperimentet krever følgende utstyr:
Utstyret skal når det er ferdig programmert koples opp slik:
MicroBit MB1 er programmert slik:
input.onButtonPressed(Button.A, function () { led.unplot(1, 2) led.plot(1, 1) radio.sendString("MB1:A") }) input.onButtonPressed(Button.B, function () { led.unplot(1, 1) led.plot(1, 2) radio.sendString("MB1:B") }) radio.setGroup(6)
led.plot() og led.unplot() er lagt inn kun for at vi skal se at microbiten er i live når vi trykker på en av de to knappene (A eller B).
Radioen i Microbit identifiseres med radio.setGroup(id). Vi må vel forstå dette som en frekvens. Vi kan i følge dokumentasjonen velge mellom 256 grupper eller frekvenser. Det er selvsagt nødvendig at senderene MB1..4 bruker samme frekvens (group) som mottageren, se nedenfor.
Maks styrke på radioen er 7 og default er 6. Hva dette innebærer i rekkevidde er avhengig av omgivelsene. Dokumentasjonen antyder maks 70m med god sikt.
Det er tekstkonstantene "MB1:A" og "MB1:B" som identifiserer Microbiten og hvilken knapp som er trykket.
MB5 tar da imot radiosignaler fra de 4 andre MBene og har kontakt med PCen. MB5 er programmert slik:
radio.onReceivedString(function (receivedString) { led.toggle(1, 1) serial.redirectToUSB() serial.writeLine(receivedString) }) input.onButtonPressed(Button.A, function () { led.toggle(1, 1) serial.redirectToUSB() serial.writeLine("Hallo") }) radio.setGroup(6)
input.onButtonpressed() er lagt inn for at vi ett kan se at MB5 er i live, og at vi har kontakt med programmet på datamaskinen.
Programmet som tar imot signaler fra MB5 over en USB-inngang er skrevet i Processing. Dette er en minimalistisk versjon som ikke gjør annet enn å bekrefte hva som mottas i konsollet uner kodeeditoren.
import processing.serial.*; Serial port; /* simple communication test*/ void setup(){ size(100,100); // print available ports printArray(Serial.list()); // index 2 may have to be changed: port = new Serial(this, Serial.list()[2], 115200); port.bufferUntil(10); } void draw(){ background(255,255,255); } void serialEvent(Serial port) { String inData = port.readString(); // write to console println(inData.trim()); }
Dette kan gjøres enklere enn det som vises nedenfor, men hvis du tar deg bryet med å gjøre det systematisk så har du samtidig en backup som gjør det lettere å finne igjen koden
Websiden Microbit-Processing tar opp noen problemer som kan oppstå når MB5 skal kommunisere med PCen.