Cuprins:

Utilizarea unui LED Dot Matrix cu un registru Arduino și Shift: 5 pași
Utilizarea unui LED Dot Matrix cu un registru Arduino și Shift: 5 pași

Video: Utilizarea unui LED Dot Matrix cu un registru Arduino și Shift: 5 pași

Video: Utilizarea unui LED Dot Matrix cu un registru Arduino și Shift: 5 pași
Video: 1. q light control plus primii pași pentru QLC +. Lămpi și funcții 2024, Noiembrie
Anonim
Utilizarea unui LED Matrix Dot cu un registru Arduino și Shift
Utilizarea unui LED Matrix Dot cu un registru Arduino și Shift
Utilizarea unui LED Matrix Dot cu un registru Arduino și Shift
Utilizarea unui LED Matrix Dot cu un registru Arduino și Shift
Utilizarea unui LED Matrix Dot cu un registru Arduino și Shift
Utilizarea unui LED Matrix Dot cu un registru Arduino și Shift

LED-ul cu matrice de puncte Siemens DLO7135 este o piesă uimitoare de optoelectronică. Este facturat ca un afișaj inteligent 5x7 Dot Matrix (r) cu memorie / decodor / driver. Împreună cu această memorie, are un ecran ASCII de 96 de caractere setat cu caractere majuscule și minuscule, un generator de caractere și multiplexor încorporat, patru niveluri de intensitate a luminii și totul rulează pe 5V., și la 16 USD pe pop, cu siguranță ar trebui. În timp ce petreceam jumătate de zi la magazinul meu local de electronice preferat, am găsit un coș de gunoi plin cu acestea pentru 1,50 USD bucata. Am ieșit din magazin cu mai mulți. Această instrucțiune vă va arăta cum să vă conectați la aceste LED-uri cu matrice de puncte și să afișați caractere utilizând un Arduino bazat pe AVR. Dacă ați citit oricare dintre ghidurile mele anterioare, s-ar putea să aveți ideea că eu sunt adesea în favoarea celei mai parsimoniere soluții și nu ați greși, chiar dacă din când în când nu voi atinge obiectivul.. Prin urmare, voi face și un alt pas în acest instructable și vă voi arăta cum puteți reduce numărul de porturi I / O necesare pentru a conduce aceste LED-uri cu matrice de puncte mari.

Pasul 1: Obțineți bunurile …

Obțineți mărfurile …
Obțineți mărfurile …

Pentru acest mic proiect scurt, veți avea nevoie de:

  • un microcontroler bazat pe AVR, cum ar fi un Arduino sau oricare dintre acestea. Aceste instrucțiuni ar putea fi probabil adaptate la MCU-ul ales.
  • un LED matricial de puncte DLO7135 sau altul din aceeași familie
  • un registru de schimbare pe 8 biți precum 74LS164, 74C299 sau 74HC594
  • o placă de măsurare
  • sârmă de conectare, tăietoare de sârmă etc.

Nu este necesar un fier de lipit, deși îl folosesc mai târziu; poți trece fără asta.

Pasul 2: Conectați-vă direct la afișajul LED

Conectați-vă direct la afișajul LED
Conectați-vă direct la afișajul LED
Conectați-vă direct la afișajul LED
Conectați-vă direct la afișajul LED
Conectați-vă direct la afișajul LED
Conectați-vă direct la afișajul LED

Așezați-vă lista mică de piese și apucați LED-ul. Așezați-l pe panoul de centrat oarecum centrat, în mijlocul canelurii liniei medii. Prima parte a conectării are loc pe partea stângă a LED-ului. Pinul 1 este situat în partea stângă sus, așa cum este indicat de triunghi / săgeată. Am pus funcțiile pin pe o imagine pentru referință în timp ce citiți sau conectați LED-ul.

Partea stângă

Pozitiv și negativ Începând din stânga sus, conectați Vcc la 5V. Poate că este o idee bună să nu aveți placa alimentată până când nu completați toată partea stângă; LED-ul poate fi luminos dacă încercați să vedeți găuri mici pentru a introduce în fire. Conectați GND din stânga jos la sol. Testarea lămpii, activarea și scrierea cipurilor Al doilea și al treilea din partea de sus din stânga sunt Testarea lămpii și activarea cipului. Ambele sunt logice negative, adică sunt activate atunci când sunt la un 0 logic în loc de 1. Imaginea mea de mai jos ar trebui să aibă bare peste ele, dar nu am adnotat asta pentru niciuna dintre ele. Pinul LT când este activat luminează fiecare punct din matricea de puncte la 1/7 luminozitate. Este mai mult un test de pixeli, dar aspectul interesant al pinului LT este că nu suprascrie niciun caracter din memorie, deci dacă aveți mai multe dintre acestea strânse împreună (au o distanță de vizualizare de 20 de picioare), stroboscop LT poate face să pară un cursor. Pentru a vă asigura că este dezactivat, conectați-l la 5 V. Pinii CE și WR sunt, de asemenea, logici negative și trebuie să fie activate pentru ca acest dispozitiv inteligent să fie scris. Ați putea să gestionați acești pini cu porturi I / O de rezervă pe microcontrolerul dvs., dar nu ne vom deranja aici. Conectați-le la masă pentru a le menține activate. Niveluri de luminozitate Există patru niveluri de luminozitate programabile pe familia de LED-uri DLO:

  • Gol
  • 1/7 Luminozitate
  • 1/2 Luminozitate
  • Luminozitate deplină

BL1 HIGH și BL0 LOW sunt 1/2 luminozitate. Ambele HIGH sunt luminoase. Setați-l la orice doriți. Din nou, dacă aveți porturi I / O de rezervă și este suficient de important pentru dvs., acest lucru poate fi controlat și de Arduino, care înfășoară partea stângă. Dacă aduceți alimentarea la placa dvs., ar trebui să vedeți LED-ul luminat. Joacă-te cu comenzile luminozității și testul lămpii pentru a te familiariza cu ea, dacă ești curios.

Partea dreapta

Partea dreaptă constă din porturi de date în întregime. În dreapta jos, pinul 8 sau D0 pentru a fi precis, reprezintă cel mai puțin semnificativ bit din caracterul de 7 biți. În dreapta sus, pinul 14 sau D6 reprezintă bitul cel mai semnificativ. Acest lucru vă permite să știți ce ordine să amestecați biții când scrieți pe LED. Când aveți conectate porturile de intrare a datelor, găsiți șapte porturi I / O digitale goale pe Arduino sau AVR și conectați-le. Probabil că veți dori să vă amintiți ce port de ieșire a datelor de pe AVR-ul dvs. merge la ce port de intrare de date de pe LED. Acum sunteți gata să împingeți niște date pe acel LED inteligent. Încă tremuri de entuziasm? Stiu ca sunt…

Pasul 3: Specificarea unui caracter de afișat

Specificarea unui caracter de afișat
Specificarea unui caracter de afișat

Setul de caractere utilizat pe acest LED CMOS este ASCII de la început, începând de la 0x20 (zecimal 32; un spațiu) și terminând la 0x7F (zecimal 127; o ștergere, deși reprezentată pe LED ca un cursor grafic). Deci, afișarea cu LED-uri a unui caracter nu implică altceva decât apăsarea logicii 1 sau 0 pe pinii de ieșire a datelor, urmată de obicei de un impuls WR, dar renunț la acest exercițiu. mi-am amintit ce pini merg în ce porturi, nu? Am ales PD [2..7] și PB0 (pinii digitali 2 până la 8 în Arduino-speak). În mod normal, nu vă sugerăm să folosiți PD [0..1], deoarece îl dedic comunicării mele seriale înapoi la o cutie FreeBSD și Arduino's și colab. mapați acei pini la canalul lor de comunicație USB FTDI și, deși „ei” SPUN că pinii 0 și 1 vor funcționa dacă nu inițializați comunicarea serială, nu am putut folosi acei pini ca I / O digitale normale. De fapt, am petrecut două zile încercând să depanez o problemă când am încercat să folosesc PD0 și PD1 și am constatat că erau întotdeauna HIGH. * ridică din umeri * Probabil că ar fi bine să ai un fel de intrare externă, cum ar fi poate o tastatură, un comutator cu rotiță sau o rotiță sau chiar intrare de la un terminal (ArduinoTerm-ul meu nu este încă pregătit pentru prime time …). Alegerea este a ta. Pentru moment, voi doar să ilustrez cum să obțin codul pentru a obține caracterul pe care îl doriți pe LED. Există un fișier zip pentru descărcare, inclusiv codul sursă și Makefile și există, de asemenea, un film scurt care arată LED-ul imprimând setul său de caractere. Ne pare rău pentru calitatea nenorocită a videoclipului. Codul de mai jos tipărește șirul „Bun venit la instructable!” apoi parcurge întregul set de caractere pe care îl acceptă LED-ul.

DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Welcome to my Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _delay_ms (150); } pentru (i = 0x20; i <0x80; i ++) {Print2LED (i); _delay_ms (150); } Print2LED (& apos * & apos);}Ieșirea portului este îngrijită în funcția Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2); if (i & 0b01000000) PORTB = (1 <

Codul și Makefile sunt incluse într-un fișier zip de mai jos.

Pasul 4: Conservarea porturilor I / O cu un registru Shift

Păstrați porturile I / O cu un registru Shift
Păstrați porturile I / O cu un registru Shift
Păstrați porturile I / O cu un registru Shift
Păstrați porturile I / O cu un registru Shift
Păstrați porturile I / O cu un registru Shift
Păstrați porturile I / O cu un registru Shift

Deci, acum microcontrolerul nostru poate trimite date către LED-ul matricei de puncte, dar folosește opt porturi I / O. Asta exclude utilizarea unui ATtiny într-un pachet DIP cu 8 pini și chiar și cu un Arduino mai nou, care poartă un ATmega328p, care este o mulțime de porturi I / O pentru un LED. Cu toate acestea, putem ocoli acest lucru folosind un IC numit registru de schimbare. Un moment de „schimbare” a treptelor … Un registru de schimbare poate fi înțeles cel mai bine gândindu-ne la cele două cuvinte care alcătuiesc numele său: „schimbare” și „registru”. Cuvântul schimbare se referă la modul în care datele se deplasează prin registru. Aici (ca și în Arduino și microcontrolerele noastre, în general) un registru este o locație care conține date. Face acest lucru prin implementarea unui lanț liniar de circuite logice digitale numite „flip flops” care are două stări stabile care pot fi reprezentate fie de 1, fie de 0. Deci, punând opt flip flops împreună aveți un dispozitiv capabil să țină și reprezentând un octet de 8 biți. Așa cum există mai multe tipuri de flip-flop-uri și mai multe variații pe o temă a registrelor de schimbare (gândiți contoare sus / jos și contoare Johnson), există, de asemenea, mai multe tipuri de registre de schimbare bazate pe modul în care datele este blocat în registru și modul în care sunt date aceste date. Pe baza acestui fapt, luați în considerare următoarele tipuri de registre de schimbare:

  • Serial In / Parallel Out (SIPO)
  • Serial In / Serial Out (SISO)
  • Paralel In / Serial Out (PISO)
  • Paralel In / Parallel Out (PIPO)

Două dintre cele mai importante sunt SIPO și PISO. Registrele SIPO preiau datele în serie, adică un bit după altul, mutând bitul de intrare anterior pe următorul flip flop și trimitând datele pe toate intrările simultan. Acest lucru face un convertor serial în paralel. În schimb, registrele de schimbare PISO au intrări paralele, astfel încât toți biții sunt introduși simultan, dar sunt ieșiți unul câte unul. Și ați ghicit, acest lucru face un paralel frumos cu convertorul serial. Registrul de schimbare pe care dorim să îl folosim pentru a reduce numărul de pini I / O ne-ar permite să luăm acei 8 pini IO pe care i-am folosit mai devreme și să-i reducem la unul, sau poate doar la un cuplu, având în vedere că este posibil să trebuiască să controlăm modul în care introducem biții. Prin urmare, registrul de schimbare pe care îl vom folosi este un Serial In / Parallel Out. Conectați registrul de schimbare între LED și Arduino Utilizarea unui registru de schimbare este ușoară. Cel mai greu este doar vizualizarea pinilor de ieșire a datelor și modul în care cifrele binare vor ajunge în IC și modul în care acestea vor apărea în cele din urmă pe LED. Luați un moment pentru a planifica acest lucru. 1. Atașați 5V la pinul 14 (sus dreapta) și luați pinul 7 (jos stânga) în jos la sol. Registrul de schimbare are două intrări seriale, dar vom folosi doar una, deci conectați pinul doi la 5V3. Nu vom folosi pinul clar (folosit pentru a elimina toate ieșirile), așa că lăsați-l plutitor sau atacați-l la 5V4. Conectați un port IO digital pentru a fixa unul din registrul de schimbare. Acesta este pinul de intrare serial. Conectați un port IO digital la pinul 8 (dreapta jos). Acesta este pinul ceasului. Conectați-vă liniile de date de la Q0 la Q6. Folosim doar 7 biți, deoarece setul de caractere ASCII folosește doar șapte biți. Am folosit PD2 pentru transmiterea datelor mele seriale și PD3 pentru semnalul de ceas. Pentru pinii de date, am conectat Q0 la D6 pe LED și am continuat în acest fel (Q1 la D5, Q2 la D4 etc.). Întrucât trimitem date în serie, va trebui să examinăm reprezentarea binară a fiecărui caracter pe care dorim să îl trimitem, uitându-ne la 1 și 0 și să scoată fiecare bit pe linia serială. Am inclus o a doua versiune a sursei dotmatrixled.c împreună cu un Makefile de mai jos. Ciclează prin setul de caractere și afișează toate caracterele pare (dacă este ciudat să gândim că o literă ar putea fi impar sau pare, gândiți-vă la reprezentarea binară pentru o clipă). Încercați să aflați cum să faceți ciclul afișării tuturor caracterelor ciudate. Puteți experimenta în continuare conexiunile dintre registrul de schimbare, LED-ul matricei de puncte și Arduino. Există mai multe funcții de control între LED și registru care vă pot permite să vă reglați controlul asupra momentului în care sunt afișate datele.

Pasul 5: Rezumat

rezumat
rezumat
rezumat
rezumat

În acest instructable, am prezentat LED-ul matricei de punct DLO7135 și cum să-l funcționeze. Am discutat în continuare cum să reduc numărul de porturi I / O necesare de la opt la doar două folosind un registru shift. LED-ul cu matrice de puncte DLO7135 poate fi strâns împreună pentru a face marcaje foarte atrăgătoare și interesante. Sper că v-ați distrat citind acest instructabil! Dacă vreți îmbunătățiri pe care credeți că le-aș putea face sau sugestii pe care ați dori să le oferiți cu privire la aceasta sau la oricare dintre „ible-urile” mele, sunt fericit să le aud!

Recomandat: