Sadržaj:

Stvorite električni libelu: 15 koraka
Stvorite električni libelu: 15 koraka

Video: Stvorite električni libelu: 15 koraka

Video: Stvorite električni libelu: 15 koraka
Video: Электрика в квартире своими руками. Переделка хрущевки от А до Я #9 2024, Juli
Anonim
Napravite električnu libelu
Napravite električnu libelu

Koristite ovu libelu za brzo i jednostavno prikazivanje nagiba bilo kojeg pričvršćenog objekta!

Kreirala Kaitlyn iz Raffles Institution.

Korak 1: Ciljevi

Naučite čitati nagib pomoću mikro: bit ugrađenog akcelerometra.

Naučite raditi s micro: bit 5x5 LED zaslonom!

Korak 2: Materijali

1 x BBC mikro: bit

1 x mikro USB kabel

2 x AA baterije

1 x dvostruka AA baterija

Korak 3: Predkodiranje: Povežite svoj Micro: Bit

  1. Povežite BBC micro: bit sa računarom pomoću mikro USB kabla.
  2. Pristupite javascript uređivaču za micro: bit na stranici makecode.microbit.org.

Korak 4: Korak 0: Tok koda

Prije nego počnemo pisati kôd, moramo odlučiti što želimo postići programom i kojim redoslijedom treba raditi svaka komponenta.

Za električnu libelu, koraci koje ćemo poduzeti u kodu za svaku petlju su:

  • Očitajte očitanja nagiba sa akcelerometra.
  • Pretvorite očitanja nagiba u nivoe nagiba koji će se prikazivati na LED matrici.
  • Provjerite promjene u očitanjima nivoa nagiba iz prethodne petlje.
  • Stvorite niz LED koordinata za različite slučajeve nagiba i smjera.
  • Iscrtajte LED koordinate na micro: bit LED matricu.

Nekoliko dodatnih funkcija koje moramo uključiti su:

  • Kalibracija za početni položaj nagiba.
  • Vraćanje na zadanu kalibraciju nagiba.

Korak 5: Korak 1: Definisanje promenljivih

Počinjemo definiranjem potrebnih varijabli kako je prikazano. Analiza nekoliko varijabli je sljedeća:

  • tiltList: Niz koji skladišti opseg nagiba od vrijednosti 0-4 po redoslijedu [Lijevo, Desno, Naprijed, Nazad]
  • tiltBoundary: Granica prvog nivoa nagiba između 0 (bez nagiba) i 1 (blagi nagib)
  • prevState: Niz koji pohranjuje vrijednosti nagiba micro: bita iz prethodne petlje u istom formatu kao i tiltList, koji se koristi za provjeru promjene nagiba između iteracija
  • ledPlotList: Iscrtajte nizove koordinata u obliku (x, y). Da bismo definirali niz, koristimo tip broj za označavanje ugniježđenog niza varijabli tipa: broj.

Korak 6: Korak 2: Pretvorite vrijednosti nagiba u razine

Budući da LED matrica 5x5 može prikazati samo toliko informacija, stvarne vrijednosti nagiba neće biti korisne za prikaz.

Umjesto toga, funkcija tiltExtent () uzima parametar num, koji se odnosi na vrijednost nagiba iz akcelerometra, i pretvara te vrijednosti nagiba (num) u razine nagiba od 0 do 4.

0 označava da nema nagiba u datom smjeru, a 4 označava vrlo veliki nagib, dok se -1 vraća kada dođe do greške.

Ovdje se tiltBoundary i tiltSensitivity koriste kao granične vrijednosti između nivoa nagiba.

Korak 7: Korak 3: Sastavite nivoe nagiba

Dve funkcije checkRoll () i checkPitch () upisuju nivoe nagiba dobijene iz tiltExtent () u tiltList za osi kotrljanja (levo-desno) i nagiba (napred-nazad).

Prije korištenja vrijednosti nagiba, kalibriramo ih pomoću nulirane vrijednosti za pitch (zeroPitch) i roll (zeroRoll) dobivene iz kasnije napisane kalibracijske funkcije.

Kako su očitanja akcelerometra negativna i za nagib ulijevo i prema naprijed, moramo koristiti funkciju Math.abs () da bismo dobili modul negativne vrijednosti koja se daje funkciji tiltExtent () kao parametar za ova dva smjera.

Korak 8: Korak 4: Napišite LEDPlotList funkcije

Nakon što smo dobili nivoe nagiba u tiltList -u, sada možemo napisati led grafičke funkcije za različite slučajeve koji se mogu pojaviti, naime

  • plotSingle (): Nagib samo u jednom smjeru, uzimajući opseg nagiba u zadanom smjeru kao parametar.
  • plotDiagonal (): Nagib u dva smjera iste veličine, uzimajući stepen nagiba u oba smjera kao parametar.
  • plotUnequal (): Nagib u dva smjera različitih veličina, uzimajući stepen nagiba u svakom smjeru kao parametar. Prvo koristi plotDiagonal (), a zatim dodaje u niz ledPlotList.

Ove funkcije iscrtavanja upisuju niz vodećih koordinata u ledPlotList koji će se kasnije iscrtati.

Korak 9: Korak 5: Iscrtajte LED matricu za svaki slučaj

Koristeći funkcije crtanja iz tri slučaja u koraku 4, sada možemo iscrtati stvarnu LED matricu za različite moguće kombinacije nivoa nagiba. Kako tri funkcije u koraku 4 ne razlikuju smjer, moramo prilagoditi vrijednosti koordinata proslijeđene LED matrici kako bismo LED diode iscrtali u pravim smjerovima.

PlotResult () sadrži više if uvjeta koji provjeravaju vrstu nagiba i iscrtavaju LED matricu u skladu s tim pomoću led.plot (x, y). Moguće kombinacije nagiba su:

Jednosmjerni smjer: samo lijevo ili samo desno

Jednosmjerni smjer: samo naprijed ili samo unatrag

Dva smjera: naprijed-lijevo ili nazad-lijevo

Dva smjera: naprijed-desno ili nazad-desno

Napomena: Za nagib u dva smjera, svaka kombinacija može imati istu ili različitu veličinu (provjerava se usporedbom maxX i maxY), pa stoga iscrtana pomoću plotDiagonal () ili plotUnequal () respektivno.

Korak 10: Korak 6: Napišite funkcije kalibracije

Nakon što smo završili većinu koda, sada dodajemo funkcije calibTilt () i resetTilt ().

calibTilt () omogućava korisnicima da podese nagib na nulu na trenutnoj poziciji mikro: bita

resetTilt () vraća kalibraciju ploče u prvobitno stanje.

Korak 11: Korak 7: Napišite funkciju stanja

Dodajemo jednostavnu funkciju checkState () kako bismo provjerili jesu li se razine nagiba promijenile u odnosu na prethodnu iteraciju.

Ako nema promjena u nivoima nagiba iz prethodne iteracije, tj. StateChange == 0, možemo izravno prijeći na sljedeću iteraciju i preskočiti iscrtavanje LED matrice, smanjujući potrebno izračunavanje.

Korak 12: Korak 8: Sve zajedno 1. dio

Sada konačno možemo staviti sve potrebne funkcije u beskonačnu petlju micro: bit -a da bismo je ponavljali.

Najprije smo postavili tipke A i B na micro: bitu na funkcije calibTilt () i resetTilt () respektivno pomoću input.onButtonPressed () i iscrtali kvačicu na LED matrici kada je kalibracija završena.

Korak 13: Korak 9: Sve zajedno 2. dio

Zatim pokrenite potrebne funkcije prema našem protokolu koda u koraku 0 i provjerite postoji li promjena stanja (što znači da je došlo do promjene u nagibu micro: bita od posljednje iteracije).

Ako dođe do promjene nivoa nagiba, tj. StateChange == 1, kôd će ažurirati prevState na nove nivoe nagiba i postaviti stanjeChange natrag na 0 za sljedeću iteraciju te iscrtati ažurirane nivoe nagiba na LED matrici pomoću PlotResult ().

Korak 14: Korak 10: Montaža

Prebacite završeni kôd na svoj micro: bit.

Čvrsto pričvrstite svoj micro: bit i bateriju na bilo koji predmet i spreman je za upotrebu!

Awesome

Zabavite se sa svojim električnim libelom! I dok ste već tu, zašto ne biste pokušali proširiti mogućnosti senzora nagiba ili ga čak pretvoriti u igru?

Ovaj članak je iz TINKERCADEMY.

Korak 15: Izvor

Ovaj članak je sa:

Ako imate bilo kakvih pitanja, možete se obratiti na adresu [email protected].

Preporučuje se: