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
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!