Cuprins:

Creați un nivel de spirit electric: 15 pași
Creați un nivel de spirit electric: 15 pași

Video: Creați un nivel de spirit electric: 15 pași

Video: Creați un nivel de spirit electric: 15 pași
Video: Cum scrii când începi un caiet nou 2024, Iulie
Anonim
Creați un nivel de spirit electric
Creați un nivel de spirit electric

Folosiți acest nivel de spirit pentru a afișa rapid și ușor înclinarea oricărui obiect atașat!

Creat de Kaitlyn de la Raffles Institution.

Pasul 1: Obiective

Învață să citești înclinarea cu accelerometrul încorporat micro: bit.

Aflați cum să lucrați cu afișajul LED micro: bit 5x5!

Pasul 2: Materiale

1 x BBC micro: bit

1 x cablu Micro USB

2 x baterii AA

1 x pachet de baterii AA dublu

Pasul 3: Preprogramare: Conectați-vă Micro: Bit

  1. Conectați BBC micro: bit la computer folosind un cablu micro USB.
  2. Accesați editorul javascript pentru micro: bit la makecode.microbit.org.

Pasul 4: Pasul 0: Fluxul de cod

Înainte de a începe să scriem codul, trebuie să decidem ce vrem să realizăm cu programul și în ce ordine trebuie să ruleze fiecare componentă.

Pentru nivelul de spirit electric, pașii pe care îi vom face în codul pentru fiecare buclă sunt:

  • Citiți citirile de înclinare de pe accelerometru.
  • Convertiți citirile de înclinare la nivelurile de înclinare pentru a fi afișate pe matricea LED.
  • Verificați dacă există modificări ale nivelurilor de înclinare din bucla anterioară.
  • Creați o gamă de coordonate LED pentru diferite cazuri și direcții de înclinare.
  • Plasați coordonatele LED-urilor pe matricea LED micro: bit.

Câteva funcții suplimentare pe care trebuie să le includem sunt:

  • Calibrarea pentru poziția inițială de înclinare.
  • Revenind la calibrarea implicită a înclinării.

Pasul 5: Pasul 1: Definirea variabilelor

Începem prin definirea variabilelor necesare așa cum se arată. O defalcare a câtorva variabile sunt:

  • tiltList: matrice care stochează gradul de înclinare de la valorile 0-4 în ordinea [stânga, dreapta, înainte, înapoi]
  • tiltBoundary: Limita primului nivel de înclinare între 0 (fără înclinare) și 1 (înclinare ușoară)
  • prevState: Matrice care stochează valorile de înclinare ale micro: bitului dintr-o buclă anterioară în același format ca și tiltList, utilizat pentru a verifica o modificare a înclinării între iterații
  • ledPlotList: Trasați matricele de coordonate conduse în forma (x, y). Pentru a defini o matrice, folosim numărul de tip pentru a indica o matrice imbricată de variabile de tip: număr.

Pasul 6: Pasul 2: convertiți valorile înclinării la niveluri

Deoarece matricea LED 5x5 poate afișa atât de multe informații, valorile reale ale înclinării nu vor fi utile pentru afișare.

În schimb, o funcție tiltExtent () ia parametrul num, care se referă la valoarea de înclinare din accelerometru și convertește aceste valori de înclinare (num) la niveluri de înclinare de la 0 la 4.

0 indică nicio înclinare în direcția dată și 4 indică o înclinare foarte mare, în timp ce -1 este returnat atunci când există o eroare.

Aici, tiltBoundary și tiltSensitivity sunt folosite ca valori limită între nivelurile de înclinare.

Pasul 7: Pasul 3: Compilați nivelurile de înclinare

Cele două funcții checkRoll () și checkPitch () scriu nivelurile de înclinare obținute din tiltExtent () în tiltList pentru axele de rulare (stânga-dreapta) și pitch (înainte-înapoi).

Înainte de a utiliza valorile de înclinare, le calibrăm folosind o valoare zero pentru ambele pitch (zeroPitch) și roll (zeroRoll) obținute dintr-o funcție de calibrare scrisă mai târziu.

Deoarece citirile accelerometrului sunt negative atât pentru înclinarea spre stânga, cât și pentru înclinarea directă, trebuie să folosim funcția Math.abs () pentru a obține modulul valorii negative care trebuie dată funcției tiltExtent () ca parametru pentru aceste două direcții.

Pasul 8: Pasul 4: Scrieți funcțiile LEDPlotList

După ce am obținut nivelurile de înclinare în tiltList, putem scrie acum funcțiile de reprezentare a ledurilor pentru diferitele cazuri care pot apărea, și anume

  • plotSingle (): Înclinare numai într-o singură direcție, luând ca parametru extinderea înclinării în direcția dată.
  • plotDiagonal (): Înclinare în două direcții de aceeași magnitudine, luând ca parametru extinderea înclinării în ambele direcții.
  • plotUnequal (): Înclinare în două direcții de mărimi diferite, luând ca parametru extinderea înclinării în fiecare direcție. Folosește plotDiagonal () mai întâi și se adaugă apoi la matricea ledPlotList.

Aceste funcții de trasare scriu o serie de coordonate led în ledPlotList care urmează să fie trasate ulterior.

Pasul 9: Pasul 5: Reparați matricea LED pentru fiecare caz

Folosind funcțiile de trasare din cele trei cazuri din pasul 4, putem acum să trasăm matricea LED reală pentru diferitele combinații posibile de niveluri de înclinare. Deoarece cele trei funcții din pasul 4 nu discriminează direcția, trebuie să ajustăm valorile coordonatelor transmise matricei LED-urilor pentru a trasa LED-urile în direcțiile corecte.

PlotResult () conține mai multe condiții dacă verifică tipul de înclinare și trasează matricea LED în mod corespunzător folosind led.plot (x, y). Combinațiile posibile de înclinare sunt:

Direcție unică: numai la stânga sau numai la dreapta

Unică direcție: numai înainte sau numai înapoi

Două direcții: înainte-stânga sau înapoi-stânga

Două direcții: înainte-dreapta sau înapoi-dreapta

Notă: Pentru înclinarea în două direcții, fiecare combinație poate avea aceeași sau diferită magnitudine (verificată prin compararea maxX și maxY) și, prin urmare, trasată utilizând plotDiagonal () sau respectiv plotUnequal ().

Pasul 10: Pasul 6: Scrieți funcții de calibrare

După ce am finalizat cea mai mare parte a codului, acum adăugăm funcțiile calibTilt () și resetTilt ().

calibTilt () permite utilizatorilor să tareze înclinarea la zero la poziția actuală a micro: bitului

resetTilt () resetează calibrarea plăcii la starea inițială.

Pasul 11: Pasul 7: Scrieți funcția de stare

Adăugăm o funcție simplă checkState () pentru a verifica dacă nivelurile de înclinare s-au schimbat față de o iterație anterioară.

Dacă nu există nicio modificare a nivelurilor de înclinare dintr-o iterație anterioară, adică stateChange == 0, putem trece direct la următoarea iterație și să omitem graficarea matricei LED, reducând calculul necesar.

Pasul 12: Pasul 8: Împreună, partea 1

Acum putem pune în cele din urmă toate funcțiile necesare în bucla infinită a micro: bitului pentru al rula în mod repetat.

În primul rând, setăm butoanele A și B pe micro: bit la funcțiile calibTilt () și resetTilt () folosind respectiv input.onButtonPressed () și trasăm o bifă pe matricea LED-ului când calibrarea este finalizată.

Pasul 13: Pasul 9: Împreună, partea 2

Apoi rulați funcțiile necesare conform fluxului de coduri din Pasul 0 și verificați dacă există o modificare a stării (ceea ce înseamnă că există o modificare a înclinării micro: bitului de la ultima iterație).

Dacă există o modificare a nivelurilor de înclinare, adică stateChange == 1, codul va actualiza prevState la noile niveluri de inclinare și va seta stateChange înapoi la 0 pentru următoarea iterație și va trasa nivelurile de înclinare actualizate pe matricea LED folosind PlotResult ().

Pasul 14: Pasul 10: Asamblare

Introduceți codul completat în micro: bit.

Atașați-vă micro: bitul și bateria în siguranță la orice obiect și este gata de utilizare!

Minunat

Distrează-te cu nivelul de spirit electric! Și, în timp ce vă aflați, de ce să nu încercați să extindeți capacitățile senzorului de înclinare sau chiar să-l transformați într-un joc?

Acest articol este de la TINKERCADEMY.

Pasul 15: Sursă

Acest articol provine de la:

Dacă aveți întrebări, puteți contacta : [email protected].

Recomandat: