PXT: Ballong Battle
Skrevet av: Sigurd Schaathun
Introduksjon
I super:bitpakken er Bit:Bot, en bil som vi kan programmere med micro:bit. I denne oppgaven skal vi lage en fjernstyring til den slik at vi kan ha battle.
Steg 1: Radiokommunikasjon
I de første oppgavene med Bit:Bot, er alt forhåndsprogrammert på en micro:bit som festes på bit:bot. Vi vil fjernstyre bit:bot og da trenger vi to micro:bit som snakker sammen.
Sjekkliste
{ radio.setGroup(42) })
input.onButtonPressed(Button.A, function () { radio.sendNumber(5) }) radio.onReceivedNumber(function (receivedNumber) { basic.showNumber(receivedNumber)) })
Test prosjektet
Last inn programmet på 2 micro:biter.
Steg 2: Fjernkontrollprogrammet
Nå skal vi sette opp et enkelt fjernstyringsprogram. Micro:biten skal sende tall for å få bit:boten til å gjøre ulike ting. Foreksempel kan 0 være stopp, 1 være å kjøre fremover, 2 sving venstre og 3 sving høyre.
Sjekkliste
input.onGesture(Gesture.Shake, function () { radio.sendNumber(0) }) input.onButtonPressed(Button.AB, function () { radio.sendNumber(1) }) input.onButtonPressed(Button.A, function () { radio.sendNumber(2) }) input.onButtonPressed(Button.B, function () { radio.sendNumber(3) })
Test prosjektet
Last inn programmet på den ene micro:biten.
Tips
Micro:bit har en gyro som kan registrere om den holdes vannrett eller tipper oppover eller nedover ved å bruke blokken helningsvinkel tonehøyde
under Inndata-mer. Her er oversettelsen litt dårlig pitch er oversatt med tonehøyde. Det kan vi bruke for å bestemme om den skal kjøre fremover eller bakover. I tillegg kan vi bruke en hvis
-løkke og sjekke hvordan knappene er trykket inn.
Sjekkliste
basic.forever(function () { if (input.rotation(Rotation.Pitch) < 0) { if (input.buttonIsPressed(Button.AB)) { radio.sendNumber(1) } else if (input.buttonIsPressed(Button.A)) { radio.sendNumber(2) } else if (input.buttonIsPressed(Button.B)) { radio.sendNumber(3) } else { radio.sendNumber(0) } } else { if (input.buttonIsPressed(Button.AB)) { radio.sendNumber(4) } else if (input.buttonIsPressed(Button.A)) { radio.sendNumber(5) } else if (input.buttonIsPressed(Button.B)) { radio.sendNumber(6) } else { radio.sendNumber(0) } } })
Test prosjektet
Last inn programmet på den ene micro:biten.
Steg 3: Kjøre bilen
Nå må vi lage programmet på bit:boten. Den skal oversette tallene til bevegelse. Her er det to måter å gjøre det på. Du kan legge til egne bit:bot-koder. Da går du nederst under avansert og velger utvidelser. Der velger du bit:bot og får opp en egen fane som heter bit:bot. Den andre måten er å hardkode - med å bruke skriv digital
eller skriv analog
. Da må du finne ut hvilken pinne som gjør hva.
Sjekkliste
radio.onReceivedNumber(function (receivedNumber) { if (receivedNumber == 0) { bitbot.stop(BBStopMode.Coast) } else if (receivedNumber == 1) { bitbot.go(BBDirection.Forward, 100) } })
radio.onReceivedNumber(function (receivedNumber) { if (receivedNumber == 0) { pins.digitalWritePin(DigitalPin.P16, 0) pins.digitalWritePin(DigitalPin.P14, 0) pins.digitalWritePin(DigitalPin.P12, 0) pins.digitalWritePin(DigitalPin.P8, 0) } else if (receivedNumber == 1) { pins.digitalWritePin(DigitalPin.P16, 1) pins.digitalWritePin(DigitalPin.P14, 1) pins.digitalWritePin(DigitalPin.P12, 0) pins.digitalWritePin(DigitalPin.P8, 0) } })
Tips
skriv digital
er enten 0 eller 1. Hvis du vil kjøre med redusert fart, kan du bruke skriv analog
. Da kan du justere kraften mellom 0 og 1023. Dette må vi bruke for å kunne svinge mens vi rygger.
På undersiden av bit:bot, står det hvilke pinner motoren er koblet til. Når det står P14/P8, er det en pinne for å kjøre fremover og en for å kjøre bakover. Hvis du setter strøm på begge samtidig, vil ikke motoren gå.
Test prosjektet
Last inn programmet på micro:biten du setter i bit:boten.
Utfordring
BallongBattle
Da er det å blåse opp en ballong og dytte den nedi pennefestet på bit:boten, og feste en knappenål med tape foran på festet. Da kan dere prøve å sprekke ballongene til de andre, mens du beskytter din egen ballong.
Forbedre denne siden
Funnet en feil? Kunne noe vært bedre?
Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!