Cuprins:
- Pasul 1: Modulația lățimii impulsurilor pentru amestecarea culorilor
- Pasul 2: vorbind cu registrele de schimbare și LED-urile
- Pasul 3: Schematic
- Pasul 4: Codul sursă C ++
- Pasul 5: Gadget finalizat
- Pasul 6: Aplicație: CPU Load Monitor pentru Linux folosind Perl
- Pasul 7: Aplicație: Vorbind cu alte module folosind I²C
- Pasul 8: Aplicație: „Game Cube”:-)
- Pasul 9: Afișarea imaginilor / animațiilor pe Matrix - Quick Hack
- Pasul 10: Controlul interactiv al animațiilor stocate
- Pasul 11: Afișarea videoclipului live
- Pasul 12: Mai multă lumină Aproape gratuit
Video: Afișaj LED RGB de 64 pixeli - O altă clonă Arduino: 12 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:47
Acest afișaj se bazează pe o matrice LED 8x8 RGB. În scopuri de testare, a fost conectat la o placă Arduino standard (Diecimila) folosind 4 registre de schimbare. După ce am funcționat, l-am permatat pe un PCB fabricat. Registrele de deplasare au o lățime de 8 biți și sunt ușor de interfațat cu protocolul SPI. Modulația lățimii pulsului este utilizată pentru a amesteca culorile, mai multe despre asta mai târziu. O parte din RAM-ul MCU este folosit ca framebuffer pentru a ține imaginea. Memoria RAM video este analizată de o rutină de întrerupere în fundal, astfel încât utilizatorul să poată face alte lucruri utile, cum ar fi vorbirea cu un computer, butoanele de citire și potențiometrele. Mai multe informații despre „Arduino”: www.arduino.cc
Pasul 1: Modulația lățimii impulsurilor pentru amestecarea culorilor
Modul lățimii impulsurilor - CE? Modulația lățimii impulsurilor este, în esență, să pornească și să oprească destul de repede puterea alimentată către un dispozitiv electric. Puterea utilizabilă rezultă din media matematică a funcției de undă pătrată luată în intervalul unei perioade. Cu cât funcția rămâne mai mult în poziția ON, cu atât veți obține mai multă putere. PWM are același efect asupra luminozității LED-urilor ca un dimmer la luminile de curent alternativ. Sarcina care urmează este de a controla individual luminozitatea a 64 de LED-uri RGB (= 192 de LED-uri unice!) Într-un mod ieftin și ușor, astfel încât să puteți obține întregul spectru de culori. De preferință, nu ar trebui să existe pâlpâire sau alte efecte deranjante. Percepția neliniară a luminozității prezentată de ochiul uman nu va fi luată în considerare aici (de exemplu, diferența dintre 10% și 20% luminozitate pare „mai mare” decât între 90% și 100%). Imaginea (1) ilustrează principiul de lucru al algoritmul PWM. Spuneți că codului i se dă o valoare de 7 pentru luminozitatea LED-ului (0, 0). Mai mult, știe că există un maxim de N trepte în luminozitate. Codul rulează N bucle pentru toate nivelurile posibile de luminozitate și toate buclele necesare pentru a deservi fiecare LED din toate rândurile. În cazul în care contorul buclei x din bucla de luminozitate este mai mic de 7, LED-ul este aprins. Dacă este mai mare de 7, LED-ul este oprit. Făcând acest lucru foarte rapid pentru toate LED-urile, nivelurile de luminozitate și culorile de bază (RGB), fiecare LED poate fi ajustat individual pentru a arăta culoarea dorită. Restul poate fi folosit pentru a face comunicare serială cu un PC, a citi butoane, a vorbi cu un cititor RFID, a trimite I2C date către alte module …
Pasul 2: vorbind cu registrele de schimbare și LED-urile
Un registru de schimbare este un dispozitiv care permite încărcarea datelor în serie și o ieșire paralelă. Operația opusă este posibilă și cu cipul corespunzător. Există un tutorial bun despre registrele de schimbare pe site-ul web arduino. LED-urile sunt acționate de registre de schimbare pe 8 biți de tipul 74HC595. Fiecare port poate sursa sau scufunda aproximativ 25mA de curent. Curentul total pe cip scufundat sau obținut nu trebuie să depășească 70mA. Aceste cipuri sunt extrem de ieftine, deci nu plătiți mai mult de aproximativ 40 de cenți pe bucată. Deoarece LED-urile au o caracteristică exponențială de curent / tensiune, trebuie să existe rezistențe de limitare a curentului. Folosind legea lui Ohm: R = (V - Vf) / IR = rezistor de limitare, V = 5V, Vf = tensiunea directă a LED-ului, I = curent dorit LED-uri roșii au o tensiune directă de aproximativ 1,8V, gama albastru și verde de la 2,5V la 3,5V. Folosiți un multimetru simplu pentru a determina acest lucru. Pentru o reproducere corectă a culorilor, trebuie să țineți cont de câteva lucruri: sensibilitatea spectrală a ochiului uman (roșu / albastru: rău, verde: bun), eficiența LED-ului la o anumită lungime de undă și curent. În practică, unul ia doar 3 potențiometre și le reglează până când LED-ul arată lumină albă adecvată. Desigur, curentul maxim LED nu trebuie depășit. Ceea ce este important și aici este că registrul de deplasare care conduce rândurile trebuie să furnizeze curent LED-urilor 3x8, deci mai bine să nu împingeți curentul în sus prea sus. Am avut succes cu limitarea rezistențelor de 270Ohm pentru toate LED-urile, dar asta depinde, desigur, de matricea LED-urilor. Registrele de schimbare sunt interfațate cu serialul SPI. SPI = Serial Peripheral Interface (Image (1)). Opus porturilor seriale de pe PC-uri (asincron, fără semnal de ceas), SPI are nevoie de o linie de ceas (SRCLK). Apoi, există o linie de semnal care indică dispozitivului când datele sunt valide (chip select / latch / RCLK). În cele din urmă există două linii de date, una se numește MOSI (master out slave in), cealaltă se numește MISO (master in slave out). SPI este folosit pentru interfața circuitelor integrate, la fel ca mine2C. Acest proiect are nevoie de MOSI, SRCLK și RCLK. În plus, este utilizată și linia de activare (G). Un ciclu SPI este început prin tragerea liniei RCLK la LOW (Imagine (2)). MCU își trimite datele pe linia MOSI. Starea logică a acestuia este eșantionată de registrul de deplasare la marginea ascendentă a liniei SRCLK. Ciclul se încheie trăgând linia RCLK înapoi la HIGH. Acum datele sunt disponibile la ieșiri.
Pasul 3: Schematic
Imaginea (1) arată cum sunt conectate registrele de schimbare. Acestea sunt în lanț, astfel încât datele pot fi mutate în acest lanț și, de asemenea, prin intermediul acestuia. Prin urmare, este ușor să adăugați mai multe registre de schimbare.
Imaginea (2) prezintă restul schemei cu MCU, conectori, cuarț … Fișierul PDF atașat conține toate lucrările, cele mai bune pentru imprimare.
Pasul 4: Codul sursă C ++
În C / C ++, de obicei, trebuie să prototipăm funcțiile înainte de a le codifica. # Include int main (void); } IDE-ul Arduino nu necesită acest pas, deoarece prototipurile funcțiilor sunt generate automat. Prin urmare, prototipurile funcției nu vor apărea în codul afișat aici. o întrerupere de revărsare timer1. Piese de cod care au un aspect ușor criptic pentru începători, de exemplu while (! (SPSR & (1 << SPIF))) {} utilizați direct registrele MCU. Acest exemplu în cuvinte: „în timp ce bitul SPIF din registrul SPSR nu este setat nu face nimic”. Vreau doar să subliniez că pentru proiectele standard nu este cu adevărat necesar să se ocupe de aceste lucruri atât de strâns legate de hardware. Începătorii nu ar trebui să fie speriați de acest lucru.
Pasul 5: Gadget finalizat
După ce am rezolvat toate problemele și am pornit codul, a trebuit doar să creez un aspect PCB și să-l trimit într-o casă fabuloasă. Arată atât de mai curat:-) Imagine (1): placă de control completă Imagine (2): partea frontală a PCBI-ului gol Imagine (2): partea din spate Există conectori care rup PORTC și PORTD ale cipului ATmega168 / 328 și 5V / GND. Aceste porturi conțin seria RX, liniile TX, I2Linii C, linii digitale I / O și 7 linii ADC. Acesta este destinat stivuirii scuturilor pe partea din spate a plăcii. Spațiul este potrivit pentru utilizarea perfboard (0,1 in). Bootloader-ul poate fi intermitent folosind antetul ICSP (funcționează cu USBtinyISP de la adafruit). De îndată ce se face acest lucru, utilizați doar un adaptor serial USB / TTL FTDI standard sau similar. Am adăugat și un jumper de resetare automată-dezactivare. De asemenea, am pregătit un mic script Perl (vezi blogul meu), care permite resetarea automată cu cabluri FTDI care de obicei nu funcționează din cutie (linia RTS vs. DTR). Acest lucru funcționează pe Linux, poate pe MAC. Plăcile de circuite imprimate și câteva KIT-uri DIY sunt disponibile pe blogul meu. Este necesară lipirea SMD! Consultați fișierele PDF pentru instrucțiuni de construcție și surse pentru matricele LED.
Pasul 6: Aplicație: CPU Load Monitor pentru Linux folosind Perl
Acesta este un monitor de încărcare foarte de bază cu un istoric. Se bazează pe un script Perl care adună „media de încărcare” a sistemului la fiecare 1s folosind iostat. Datele sunt stocate într-o matrice care este transferată la fiecare actualizare. Datele noi sunt adăugate în partea de sus a listei, cea mai veche intrare fiind eliminată. Informații și descărcări mai detaliate (cod …) sunt disponibile pe blogul meu.
Pasul 7: Aplicație: Vorbind cu alte module folosind I²C
Aceasta este doar o dovadă de principiu și de departe nu este cea mai simplă soluție pentru acest loc de muncă2C permite adresarea directă a până la 127 de plăci „slave”. Aici placa din partea dreaptă a videoclipului este „master” (care inițiază toate transferurile), placa din stânga este sclavul (așteaptă date). Eu2C are nevoie de 2 linii de semnal și liniile de alimentare obișnuite (+, -, SDA, SCL). Deoarece este un autobuz, toate dispozitivele sunt conectate la acesta în paralel.
Pasul 8: Aplicație: „Game Cube”:-)
Doar un gând ciudat. Acesta se potrivește și cu incinta din lemn prezentată pe pagina de introducere. Are 5 butoane pe partea din spate, care ar putea fi folosite pentru a juca un joc simplu.
Pasul 9: Afișarea imaginilor / animațiilor pe Matrix - Quick Hack
Deci are doar 8x8 pixeli și câteva culori disponibile. Mai întâi folosiți ceva de genul Gimp pentru a reduce imaginea dvs. preferată la exact 8x8 pixeli și salvați-o ca format brut ".ppm" (nu ASCII). PPM este ușor de citit și procesat într-un script Perl. Utilizarea ImageMagick și instrumentul pentru linia de comandă „convert” nu vor funcționa corect. Încărcați noul cod arduino, apoi folosiți scriptul Perl pentru a încărca pe controler. Pâlpâirea este doar o nepotrivire între reîmprospătarea LED-ului și rata cadrelor camerei mele. După actualizarea un pic a codului, acesta rulează destul de fermoar. Toate imaginile sunt transferate live pe serial așa cum le vedeți. Animațiile mai lungi ar putea fi stocate într-o EEPROM externă, așa cum se face în diferite plăci de tip speak-pov.
Pasul 10: Controlul interactiv al animațiilor stocate
De ce să lăsăm microcontrolerul să se distreze? Cultul Arduino este totul despre calcul fizic și interacțiune, așa că trebuie doar să adăugați un potențiometru și să preluați controlul! Folosirea uneia dintre cele 8 intrări de convertor analogic digital face acest lucru foarte simplu.
Pasul 11: Afișarea videoclipului live
Folosind un script Perl și câteva module, este destul de ușor să afișați videoclipuri cvasi-live pe sistemele X11. A fost codificat pe Linux și poate funcționa și pe MAC-uri. Funcționează astfel: - obțineți poziția cursorului mouse-ului - capturați o cutie de pixeli NxN centrată la cursor - scalați imaginea la 8x8 pixeli - trimiteți-o la placa LED- repeta
Pasul 12: Mai multă lumină Aproape gratuit
Cu doar doi pași, luminozitatea poate fi crescută destul de mult. Înlocuiți rezistențele de 270Ω cu cele de 169Ω și porniți un alt registru de schimbare 74HC595 pe IC5.
Recomandat:
Pixeli vii - Imaginați-vă că tehnologia are viață: 4 pași (cu imagini)
Pixeli vii - Imaginați-vă că tehnologia are viață: văzând că produsele inteligente pentru casă sunt mai frecvente în viața noastră, am început să mă gândesc la relația dintre oameni și aceste produse. Dacă într-o zi, produsele inteligente pentru casă devin o parte indispensabilă a vieții tuturor, ce atitudini ar trebui să adoptăm
FLEXBALL - o minge PCB flexibilă de sute de pixeli cu WiFi: 6 pași (cu imagini)
FLEXBALL - o minge de PCB flexibilă de sute de pixeli cu WiFi: Bună ziua, producătorilor, este producătorul moekoe! Este controlat de un ESP8285-01f - cel mai mic modul bazat pe ESP de Espressif. În plus, are un acceleromete ADXL345
Nuante de pixeli LED RGB: 17 pași (cu imagini)
Nuante de pixeli LED RGB: Bună tuturor, în acest instructabil vă voi arăta cum să faceți o pereche de nuanțe de pixeli LED. Inițial, le-am creat pentru a le purta în casă de Crăciun / Anul Nou, ca un ornament mobil, dar au ajuns să fie ceva mai cyberpunk
Ceas 132 pixeli: 5 pași (cu imagini)
132 Pixel Clock: De cât timp îmi amintesc, am fost obsedat de LED-uri și de timp. În acest proiect am creat un ceas de perete mare care afișează ora curentă folosind 132 de LED-uri neopixel montate și strălucitoare printr-o placă de molid. Este un analog digital hibrid
Cum să pixeli imagini - cu ușurință: 3 pași (cu imagini)
Cum să pixeli imagini - cu ușurință: Aceasta rapidă este o tehnică de utilizare a cenzurii pixelilor pentru a păstra anonimatul, demnitatea etc. pe imaginile digitale. Ai nevoie doar de un editor de imagini simplu, cum ar fi MS Paint, eu folosesc MS Paint. Pentru o alternativă, vezi acest lucru Instructabil