Level 3PXT: Joystick

Skrevet av: Tom Arne Orthe

Kurs: Microbit
Tema: Blokkbasert, Elektronikk, Spill
Fag: Programmering, Matematikk, Naturfag, Teknologi
Klassetrinn: 5.-7. klasse, 8.-10. klasse, Videregående skole

Introduksjon

I denne oppgaven skal vi koble en joystick (styrepinne) til Micro:bit-en og så styre en figur («sprite») på Micro:bit-ens skjerm ved hjelp av joysticken. Figuren er en lysende LED på skjermen til Micro:bit.

Bilde av en joystick

Steg 1: Vi kobler til joysticken

For å koble til joystick-en trenger vi noe ekstra utstyr:

  • 1 grønn ledning med kontakt (hull) i begge ender.

  • 1 rød ledning med kontakt (hull) i begge ender.

  • 1 blå ledning med kontakt (hull) i begge ender.

  • 1 svart ledning med kontakt (hull) i begge ender.

  • 1 koblingsbrett slik at vi kan bruke alle tilkoblingsmuligheter micro:biten har.

  • 1 analog joystick

    Bilde av ledninger
    Bilde av koblingsbrett

checkSjekkliste

  • Bilde av koblinger

Steg 2: Vi koder micro:biten

For å kode micro:biten må vi forstå hvordan koblingen vi laget i forrige steg fungerer. Strøm vil gå fra 3V på micro:biten til +5V på Joysticken. Strøm vil så gå tilbake fra GND på joystick til 0V (GND) på Micro:bit-en. Joysticken vil også sende litt strøm over VRx og VRy og mengden strøm vil avhenge av hvor mye vi beveger pinnen på joysticken langs X-aksen (side til side) og Y-aksen (opp og ned). Micro:biten kan da lese verdiene (mellom 0 og 1023) på pin 1 og 0 for å finne ut i hvilken posisjon joysticken står. På pin 0 betyr verdi 0 at joysticken er bøyd helt til venstre og 1023 betyr helt til høyre. På pin 1 betyr verdi 0 at joysticken er bøyd helt ned og 1023 betyr at joystick er bøyd helt opp. Verdien 512 betyr at joysticken står rett opp.

checkSjekkliste

let spiller = game.createSprite(2, 2)
let spiller = game.createSprite(2, 2)
basic.forever(function () {
    lesX = pins.analogReadPin(AnalogPin.P0)
    lesY = pins.analogReadPin(AnalogPin.P1)
    if (lesX < 300) {
        spiller.change(LedSpriteProperty.X, -1)
    }
    if (lesX > 700) {
        spiller.change(LedSpriteProperty.X, 1)
    }
    if (lesY < 300) {
        spiller.change(LedSpriteProperty.X, 1)
    }
    if (lesY > 700) {
        spiller.change(LedSpriteProperty.X, -1)
    }
})

flagTest prosjektet

Noen utfordringer

Noen forslag til endringer og utvidelser, men prøv selv dine ideer!

Du har nå lært hvordan du kan lage en enkel animasjon med micro:bit. Nedenfor er noen ideer til videreutvikling, men finn gjerne på noe helt eget!

Lisens: CC BY-SA 4.0

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!