Indholdsfortegnelse:

Opret et elektrisk vaterpas: 15 trin
Opret et elektrisk vaterpas: 15 trin

Video: Opret et elektrisk vaterpas: 15 trin

Video: Opret et elektrisk vaterpas: 15 trin
Video: Электрический или водяной полотенцесушитель? Что выбрать? Установка. #25 2024, November
Anonim
Opret et elektrisk vaterpas
Opret et elektrisk vaterpas

Brug dette vaterpas til hurtigt og nemt at vise tiltningen af ethvert vedhæftet objekt!

Oprettet af Kaitlyn fra Raffles Institution.

Trin 1: Mål

Lær at læse tilt med micro: bit's indbyggede accelerometer.

Lær at arbejde med micro: bit's 5x5 LED Display!

Trin 2: Materialer

1 x BBC micro: bit

1 x Micro USB -kabel

2 x AA batterier

1 x dobbelt AA -batteripakke

Trin 3: Forkodning: Tilslut din Micro: Bit

  1. Tilslut BBC micro: bit til din computer ved hjælp af et mikro -USB -kabel.
  2. Få adgang til javascript -editoren for micro: bit på makecode.microbit.org.

Trin 4: Trin 0: Kodeflow

Inden vi begynder at skrive koden, skal vi beslutte, hvad vi vil opnå med programmet, og i hvilken rækkefølge hver komponent skal køre.

For det elektriske vaterpas er de trin, vi vil tage i koden for hver sløjfe:

  • Læs tilt -aflæsninger fra accelerometer.
  • Konverter vippeaflæsninger til tiltniveauer, der skal vises på LED -matrix.
  • Kontroller for ændring i hældningsniveauaflæsninger fra forrige sløjfe.
  • Opret array af LED -koordinater til forskellige vippekasser og retninger.
  • Tegn LED -koordinater på mikro: bit LED -matrix.

Et par ekstra funktioner, vi skal inkludere, er:

  • Kalibrering til startposition.
  • Tilbage til standard tilt kalibrering.

Trin 5: Trin 1: Definition af variabler

Vi starter med at definere de nødvendige variabler som vist. En opdeling af et par variabler er:

  • tiltList: Array, der gemmer tiltens omfang fra værdier 0-4 i rækkefølgen [Venstre, Højre, Fremad, Bagud]
  • tiltBoundary: Grænse for det første tilt niveau mellem 0 (ingen tilt) og 1 (let tilt)
  • prevState: Array, der gemmer tilt -værdierne for micro: bit fra en tidligere loop i samme format som tiltList, bruges til at kontrollere for en ændring i tilt mellem iterationer
  • ledPlotList: Plot led -koordinatarrays i formen (x, y). For at definere et array bruger vi typetallet til at angive et indlejret array af variabler af type: number.

Trin 6: Trin 2: Konverter Tilt -værdier til niveauer

Da 5x5 LED -matrix kun kan vise så mange oplysninger, vil de faktiske tilt -værdier ikke være nyttige til visning.

I stedet tager en funktion tiltExtent () parameteren num, der refererer til tilt -værdien fra accelerometeret, og konverterer disse tilt -værdier (num) til tiltniveauer fra 0 til 4.

0 angiver ingen hældning i den givne retning og 4 angiver meget stor hældning, mens -1 returneres, når der er en fejl.

Her bruges tiltBoundary og tiltSensitivity som grænseværdier mellem tiltniveauer.

Trin 7: Trin 3: Kompilér hældningsniveauer

De to funktioner checkRoll () og checkPitch () skriver tiltniveauerne opnået fra tiltExtent () i tiltList for henholdsvis rulleaksen (venstre-højre) og pitch (fremad-bagud).

Inden vi anvender tilt -værdierne, kalibrerer vi dem ved hjælp af en nulstillet værdi for både pitch (zeroPitch) og roll (zeroRoll) opnået fra en kalibreringsfunktion skrevet senere.

Da accelerometeraflæsningerne er negative for både venstre og fremad hældning, skal vi bruge funktionen Math.abs () til at opnå modulet for den negative værdi, der skal gives til tiltExtent () -funktionen som en parameter for disse to retninger.

Trin 8: Trin 4: Skriv LEDPlotList -funktioner

Efter at have opnået tiltniveauerne i tiltList kan vi nu skrive de ledede plotningsfunktioner til de forskellige tilfælde, der kan opstå, nemlig

  • plotSingle (): Vip kun i en enkelt retning, idet omfanget af tilt i en given retning er taget som parameter.
  • plotDiagonal (): Vip i to retninger af samme størrelse, idet omfanget af tilt i begge retninger er taget som parameter.
  • plotUnequal (): Vip i to retninger af forskellig størrelse, idet omfanget af tilt i hver retning er taget som parameter. Bruger plotDiagonal () først og tilføjes til ledPlotList -array bagefter.

Disse plottefunktioner skriver en række led -koordinater til ledPlotList, der senere skal afbildes.

Trin 9: Trin 5: Plot LED Matrix for hvert tilfælde

Ved hjælp af plottefunktionerne fra de tre tilfælde i trin 4 kan vi nu plotte den faktiske LED -matrix for de forskellige mulige kombinationer af tiltniveauer. Da de tre funktioner i trin 4 ikke skelner mellem retning, er vi nødt til at justere de koordinatværdier, der sendes til LED -matrixen, for at plotte LED'erne i de rigtige retninger.

PlotResult () indeholder flere if -betingelser, der kontrollerer typen af hældning og plotter LED -matricen i overensstemmelse hermed ved hjælp af led.plot (x, y). De mulige kombinationer af tilt er:

Enkeltretning: Kun venstre eller kun højre

Enkeltretning: Kun frem eller tilbage

To retninger: Fremad-venstre eller Bagud-venstre

To retninger: Fremad-højre eller Baglæns-højre

Bemærk: Ved vippe i to retninger kan hver kombination have samme eller forskellig størrelse (kontrolleret ved at sammenligne maxX og maxY) og deraf plottet ved hjælp af henholdsvis plotDiagonal () eller plotUnequal ().

Trin 10: Trin 6: Skriv kalibreringsfunktioner

Efter at have fuldført hovedparten af koden tilføjer vi nu funktionerne calibTilt () og resetTilt ().

calibTilt () giver brugerne mulighed for at tære tilt til nul ved mikro: bitens aktuelle position

resetTilt () nulstiller kalibreringen af kortet til dets oprindelige tilstand.

Trin 11: Trin 7: Skriv tilstandsfunktion

Vi tilføjer en simpel funktion checkState () for at kontrollere, om tiltniveauerne er ændret fra en tidligere iteration.

Hvis der ikke er nogen ændring i tiltniveauer fra en tidligere iteration, dvs. stateChange == 0, kan vi direkte gå videre til den næste iteration og springe plottingen af LED -matrixen over, hvilket reducerer den nødvendige beregning.

Trin 12: Trin 8: Sæt det hele sammen Del 1

Nu kan vi endelig placere alle de nødvendige funktioner i micro: bit's uendelige loop for at køre det gentagne gange.

For det første indstiller vi knap A og B på micro: bit til henholdsvis funktionerne calibTilt () og resetTilt () ved hjælp af input.onButtonPressed (), og tegner et kryds på LED -matrixen, når kalibreringen er afsluttet.

Trin 13: Trin 9: Sæt det hele sammen Del 2

Kør derefter de nødvendige funktioner i henhold til vores kodeflow i trin 0, og kontroller for en tilstandsændring (hvilket betyder, at der er en ændring i hældningen af micro: bit siden den sidste iteration).

Hvis der er en ændring i tiltniveauer, dvs. stateChange == 1, opdaterer koden prevState til de nye tiltniveauer og sætter stateChange tilbage til 0 for den næste iteration, og plotter de opdaterede tiltniveauer på LED -matrixen ved hjælp af PlotResult ().

Trin 14: Trin 10: Montering

Flash den udfyldte kode til din micro: bit.

Fastgør din micro: bit og batteripakken sikkert til ethvert objekt, og den er klar til brug!

Fantastisk

God fornøjelse med dit elektriske vaterpas! Og mens du er i gang, hvorfor så ikke prøve at udvide mulighederne for tilt -sensoren eller endda gøre det til et spil?

Denne artikel er fra TINKERCADEMY.

Trin 15: Kilde

Denne artikel er fra:

Hvis du har spørgsmål, kan du kontakte : [email protected].

Anbefalede: