Cuprins:
- Pasul 1: Obiective
- Pasul 2: Materiale
- Pasul 3: Preprogramare: Conectați-vă Micro: Bit
- Pasul 4: Pasul 0: Fluxul de cod
- Pasul 5: Pasul 1: Definirea variabilelor
- Pasul 6: Pasul 2: convertiți valorile înclinării la niveluri
- Pasul 7: Pasul 3: Compilați nivelurile de înclinare
- Pasul 8: Pasul 4: Scrieți funcțiile LEDPlotList
- Pasul 9: Pasul 5: Reparați matricea LED pentru fiecare caz
- Pasul 10: Pasul 6: Scrieți funcții de calibrare
- Pasul 11: Pasul 7: Scrieți funcția de stare
- Pasul 12: Pasul 8: Împreună, partea 1
- Pasul 13: Pasul 9: Împreună, partea 2
- Pasul 14: Pasul 10: Asamblare
- Pasul 15: Sursă
Video: Creați un nivel de spirit electric: 15 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
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
- Conectați BBC micro: bit la computer folosind un cablu micro USB.
- 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:
Controlați motorul electric puternic de skateboard electric E-Bike 350W folosind Arduino și BTS7960b: 9 pași
Controlați un motor electric puternic de skateboard electric E-Bike de 350W folosind Arduino și BTS7960b: În acest tutorial vom învăța cum să controlați un motor de curent continuu utilizând driverul Arduino și Dc bts7960b. Motorul poate fi un motor de curent continuu arduino de 350W sau doar un atâta timp cât puterea sa nu depășește curentul maxim al driverului BTS7960b. Urmăriți videoclipul
Nivel de spirit digital bazat pe Arduino și MPU6050: 3 pași
Nivel de spirit digital bazat pe Arduino și MPU6050: Bine ați venit la primul meu instructiv! Sper că vi se pare informativ. Vă rugăm să nu ezitați să lăsați feedback pozitiv sau negativ. Acest proiect este de a crea un arduino & Nivel de spirit digital bazat pe MPU6050. În timp ce designul finit și
Creați-vă propriul longboard electric motorizat: 8 pași (cu imagini)
Creați-vă propriul longboard electric motorizat: în acest proiect vă voi arăta cum să construiți un longboard electric motorizat de la zero. Poate atinge viteze de până la 34 km / h și poate călători până la 20 km cu o singură încărcare. Costurile estimate sunt în jur de 300 $ ceea ce îl face o alternativă bună la comerț
DIY Digital Spirit Level: 5 pași (cu imagini)
DIY Digital Spirit Level: În acest proiect vom analiza mai atent IC-urile accelerometrului și vom afla cum le putem folosi cu un Arduino. Ulterior vom combina un astfel de IC cu câteva componente complementare și o carcasă imprimată 3D pentru a crea un digital
Lampă cu starea de spirit cu LED Low Poly: 9 pași (cu imagini)
Lampă LED Low Poly Mood: un plus excelent pentru orice birou, raft sau masă! Butonul discret situat pe bază vă permite să parcurgeți diferite modele de iluminare cu LED-uri. Nu contează dacă doriți să utilizați lampa pentru a studia, relaxa sau chiar petreceri