PXT: Kompass
Skrevet av: Kolbjørn Engeland
Oversatt av: Stein Olav Romslo
Introduksjon
Micro:bit-en har ein innebygd magnetisk sensor, det har òg dei fleste smarttelefonar. Me kan bruke denne sensoren til å lage eit digitalt kompass. I eit vanleg analogt kompass har me ei magnetisk nål som peikar mot nord uansett kva veg me snur det. På ein liknande måte skal me få micro:bit-en til å vise ei pil som alltid peikar mot nord.

Steg 1: Me finn kompassretning
Micro:bit-en les av kompassretninga i gradar. Den viser kor mange grader frå nord, målt med klokka, micro:bit-en peikar. Altså er 0° nord, 90° er aust, 180° er sør og 270° er vest. Sidan me veit i kva retning micro:bit-en peikar kan me berekne kva retning ei pil på skjermen må peike for å vise retning mot nord.

Sjekkliste
let retning = 0 basic.forever(function () { retning = input.compassHeading() basic.showNumber(retning) })
Test prosjektet
Steg 2: Me viser pila
Det er mykje lettare å finne ut kva veg nord er ved å leggje inn ei pil som alltid peikar mot nord. Me skal bruke ei pil som kan peike i 8 ulike retningar. Difor må me tenke oss at me deler kompassrosa inn i 8 kakestykke eller delar som alle har ei opning på 360° / 8 = 45°. Kvar retning er då innanfor følgjande vinklar:
- Nord: 337.5o til 22.5o.
- Nordvest: 22.5o til 67.5o.
- Vest: 67.5o til 112.5o.
- Sørvest: 112.5o til 157.5o.
- Sør: 157.5o til 202.5o.
- Søraust: 202.5o til 247.5o.
- Aust: 247.5o til 292.5o.
- Nordaust: 292.5o til 337.5o.
Då kan me starte å teste kva retning micro:bit-en peikar i.
let retning = 0 basic.forever(function () { retning = input.compassHeading() if (retning < 22.5) { basic.showArrow(ArrowNames.North) } else if (retning < 67.5) { basic.showArrow(ArrowNames.NorthWest) } else if (retning < 112.5) { basic.showArrow(ArrowNames.West) } else if (retning < 157.5) { basic.showArrow(ArrowNames.SouthWest) } else if (retning < 202.5) { basic.showArrow(ArrowNames.South) } else if (retning < 247.5) { basic.showArrow(ArrowNames.SouthEast) } else if (retning < 292.5) { basic.showArrow(ArrowNames.East) } else if (retning < 337.5) { basic.showArrow(ArrowNames.NorthEast) } else { basic.showArrow(ArrowNames.North) } })
Test prosjektet
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!