PXT: Kompass
Skrevet av: Kolbjørn Engeland, Julie Revdahl
Introduksjon
Micro:biten har en magnetisk sensor innebygd, noe også de fleste smarttelefonene har. Vi kan bruke denne sensoren til å lage et digitalt kompass. I et vanlig analogt kompass har vi en magnetisk nål som peker mot nord uansett hvilken vei vi snur det. På en lignende måte skal vi få micro:biten til å vise en pil som alltid peker mot nord.

Steg 1: Vi finner kompassretning
Micro:biten leser av kompassretningen i grader. 0o er Nord, 90o er øst, 180o er sør og 270o er vest. Siden vi vet i hvilken retning micro:biten peker, kan vi beregne i hvilken retning et pilbilde på micro:biten må peke for å vise retning mot nord.

Sjekkliste
let retning = 0
basic.forever(function () {
retning = input.compassHeading()
basic.showNumber(retning)
})
Test prosjektet
Steg 2: Vi viser pilen
Det er mye lettere å finne ut hvilken vei Nord er ved å legge inn en pil' som alltid peker mot nord. Vi skal bruke et pilbilde som kan peke i 8 ulike retninger. Vi må derfor tenke at vi deler kompassrosa opp i 8 kakestykker eller segmenter som alle har en åpning på 360o / 8 = 45o. Segmentene for de 8 ulike himmelretningene blir da:
- Nord: 337.5o til 22.5o.
- Nord-vest: 22.5o til 67.5o.
- Vest: 67.5o til 112.5o.
- Sør-vest: 112.5o til 157.5o.
- Sør: 157.5o til 202.5o.
- Sør-øst: 202.5o til 247.5o.
- Øst: 247.5o til 292.5o.
- Nord-øst: 292.5o til 337.5o. Da kan vi sette i gang med å teste for i hvilken retning micro:biten peker.
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!








