Med block från kategorin Radio kan flera micro:bit kommunicera med varandra trådlöst.
Det första som är viktig med Radio är att se till att alla micro:bit pratar på samma frekvens, vilket kallas grupp. Grupp anges med ett nummer från 0 till 255. Det spelar ingen roll vilket nummer du väljer, bara att det inte finns någon nära dig som skickar i samma grupp. För då kan det bli förvirrande. Det behövs bara göras en gång, så det passar bra i ”vid start”-blocket.
Sen finns det olika block för att skicka information. Man kan skicka en sträng (textbit), nummer, eller en kombination av en sträng och ett nummer. Detta tas emot i ett ”on radio received”-block. Värdet som detta block tar emot hamnar i en variabel vars namn (receivedString
) visas i blocket. Efter att vi har dragit ur radioblocket kan vi hitta denna variabel i Variabler kategorin. Då kan vi enkelt visa upp strängen.
input.onButtonPressed(Button.A, () => { radio.sendString("Ja") }) input.onButtonPressed(Button.B, () => { radio.sendString("Nej") }) radio.onDataPacketReceived( ({ receivedString }) => { basic.showString(receivedString) }) radio.setGroup(97)
Strömma data
Ett annat roligt exempel är att använda radio för att hålla koll på en sensor på distans. Så här kan du skicka data hela tiden, och enkelt visa upp det på en annan micro:bit.
radio.onDataPacketReceived( ({ receivedNumber }) => { led.plotBarGraph( receivedNumber, 2048 ) }) basic.forever(() => { radio.sendNumber(input.acceleration(Dimension.X)) }) radio.setGroup(147)
Räkna fordon
Om man vill kunna skicka olika information, och veta vilka information som skickas, kan man göra det med ”radio sända värde”-blocket. I blocket som tar emot har man tillgång till båda strängen och numret som skickas ihop. Följande exemplet använder det för att räkna två olika fordon och skicka det vidare trådlöst. Där visas det på skärmen med en (ganska abstrakt) ikon beroende på fordonstyp, som blinkar lika många gånger som den var räknat.
let cyklar = 0 let bilar = 0 input.onButtonPressed(Button.A, () => { bilar += 1 radio.sendValue("bilar", bilar) }) input.onButtonPressed(Button.B, () => { cyklar += 1 radio.sendValue("cyklar", cyklar) }) radio.onDataPacketReceived( ({ receivedString: name, receivedNumber: value }) => { if (name == "bilar") { for (let i = 0; i < value; i++) { basic.showLeds(` . . . . . . . . . . . # # # . # # # # # . # . # . `) basic.pause(300) basic.clearScreen() basic.pause(300) } } if (name == "cyklar") { for (let i = 0; i < value; i++) { basic.showLeds(` . # . . . . # . # # . # # . . # # . # # # # . # # `) basic.pause(300) basic.clearScreen() basic.pause(300) } } })