Datorită complexităţii subiectului am decis să divid acest tutorial în 3 părţi. În prima parte a acestui tutorial vei învăţa cum poţi extinde numărul porturilor de pe placa ta Arduino cu ajutorul registrilor de deplasare (shift registers). Acest lucru este necesar în cazul în care rămâi fără ieşiri sau intrări digitale. De asemenea regiştrii de deplasare pot ajuta la simplificarea circuitului.

Necesar
-Placa de dezvoltare Arduino Uno
-Breadboard
-2buc 74HC595 (registru de deplasare)
-display 2x8segmente
-16 rezistente de 220Ω.

Cum funcţionează un registru de deplasare

74HC595
Funcţionarea unui registru de deplasare se bazează pe comunicarea serială sincronă între Arduino şi circuitul integrat 74HC595. Astfel prin comutarea unui pin (DS) între valoarea 1 şi 0 se transmite un byte registrului bit cu bit. Cu ajutorul celui de-al doilea pin (SH_CP) se transmite semnalul de ceas. Acest semnal are rolul de a face delimitarea intre biţi. Odată ce byte-ul a fost transmis, acesta este stocat în memoria interna a registrului. Când pinul de latch (SL-CP) este trecut de pe 0 pe 1 datele salvate în memoria internă sunt mutate către pinii de ieşire Q(0-7). În concluzie putem spune că în registrul de deplasare datele intra pe un port serial şi ies pe un port paralel.

8 LED-uri şi un registru de deplasare

Legăturile le facem conform cu schema de mai jos.
led_bb
Primul program

O să modific programul ce l-am făcut pentru tutorialul despre leduri prin introducerea părţii speciale de comandă a regiştrilor de deplasare. De asemenea am realizat o foaie de calcul în Calc/Excel care ne va ajuta să transformăm fiecare byte al animaţie într-un număr zecimal (metoda ‘băbească’ de a calcula fiecare secvenţă a animaţiei).

led_calc

Pentru a realiza animaţia propusă va trebui trimis către registrului de deplasare valorile aflate în coloana galbena cu un anumit delay între ele.

Afişaj 2×8 segmente şi două registre de deplasare

Se leagă displayul 2×8 segmente la cele 2 registre de deplasare după cum urmează:

7seg_calc

(cu ajutorul foii de calcul ataşate 7led.ods poţi să creezi şi alte caractere, spre exemplu litere:A;B;C…)

7seg_sch.p

iar când totul este gata ar trebuii să arate ca în imaginea de mai jos.

7seg_bb

După cum se observă din schemele de mai sus cele două registre de deplasare sunt legate pe aceiaşi magistrală de date. Totuşi diferenţa apare prin faptul că pentru a comunica cu cel de-al doilea registru folosim funcţia de ‘serial out’ al primului registru (pinul Q7′). Acest pin va fi legat pe pinul ‘serial in’ al celui de-al doilea registru (DS).

Program pentru display 2×8 segmente
Următorul program va afişa pe display un contor. Acest contor va începe numărătoarea de la 0.0 pana la 9.9 cu un increment de 0.1. De la 10 va continua până la 99 cu un increment de 1. Funcţia ‘numar’ o vei putea folosi şi în alte proiecte pentru afişarea numerelor pe un display 2 x 8 segmente sau cu mici modificări pe N x 8 segmente.

In continuare câteva poze cu rezultatul celui de-al doilea program. (o mica pădure de fire )

2012-02-26_23-03-07_671

2012-02-26_23-04-05_154
Spor la treaba!

Registru de deplasare, leduri şi afişaj 7segmente
Etichetat pe:        

2 gânduri despre „Registru de deplasare, leduri şi afişaj 7segmente

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.