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!








