- Modul de afișare cu 7 segmente și 4 cifre cu 7 segmente:
- Conectarea modulului cu 4 cifre din 7 segmente cu Raspberry Pi:
- Programarea Raspberry Pi:
- Afișați timpul pe 4 cifre cu 7 segmente folosind Raspberry Pi:
Știm cu toții că Raspberry Pi este o minunată platformă de dezvoltare bazată pe microprocesor ARM. Cu puterea sa de calcul ridicată, poate face minuni în mâinile pasionaților de electronice sau studenților. Toate acestea pot fi posibile numai dacă știm cum să o facem să interacționeze cu lumea reală și să analizăm datele printr-un dispozitiv de ieșire. Există mulți senzori care pot detecta anumiți parametri din lumea în timp real și îl pot transfera într-o lume digitală și îi analizăm vizualizându-i fie pe un ecran LCD, fie pe un alt ecran. Dar, întotdeauna nu ar fi economic să folosiți un ecran LCD cu PI pentru afișarea unei cantități mici de date. Aici preferăm să utilizăm afișajul LCD alfanumeric 16x2 sau afișajul cu 7 segmente. Am învățat deja cum să folosim un LCD alfanumeric și un afișaj cu 7 segmente cu un singur segment cu Raspberry pi. Astăzi o vom faceInterfață Modul de afișare cu șapte segmente din 4 cifre cu Raspberry Pi și afișează Time peste el.
Deși LCD alfanumeric 16x2 este mult mai confortabil decât afișajul cu 7 segmente, există puține scenarii în care un afișaj cu 7 segmente ar fi mai ușor decât un afișaj LCD. Ecranul LCD suferă de dezavantajul de a avea dimensiuni reduse ale caracterelor și va fi exagerat pentru proiectul dvs. dacă intenționați doar să afișați câteva valori numerice. 7 segmente au, de asemenea, avantajul împotriva unei condiții de iluminare slabe și pot fi vizualizate din unghiuri lager decât un ecran LCD normal. Deci, să începem să știm.
Modul de afișare cu 7 segmente și 4 cifre cu 7 segmente:
7 Segment Display conține șapte segmente și fiecare segment are un LED în interior pentru a afișa numerele iluminând segmentele corespunzătoare. De exemplu, dacă doriți ca segmentul cu 7 să afișeze numărul „5”, atunci trebuie să străluciți segmentele a, f, g, c și d, făcând pinii lor înalți. Există două tipuri de afișaje pe 7 segmente: catod comun și anod comun, aici folosim afișaj cu șapte segmente pentru catod comun. Aflați mai multe despre afișajul pe 7 segmente aici.
Acum știm cum să afișăm caracterul nostru numeric dorit pe un singur ecran cu 7 segmente. Dar, este destul de evident că am avea nevoie de mai mult de un afișaj pe 7 segmente pentru a transmite orice informație care are mai mult de o cifră. Deci, în acest tutorial vom folosi un modul de afișare cu 7 segmente din 4 cifre, așa cum se arată mai jos.
După cum putem vedea, există patru afișaje cu șapte segmente conectate împreună. Știm că fiecare modul cu 7 segmente va avea 10 pini și pentru 4 afișaje cu șapte segmente ar exista 40 de pini în total și ar fi agitat pentru oricine să le lipească pe o placă de puncte, așa că aș recomanda cu toată încrederea oricui să cumpere un modul sau creați-vă propriul PCB pentru utilizarea unui afișaj cu 4 cifre, cu 7 segmente. Schema conexiunii pentru același lucru este prezentată mai jos:
Pentru a înțelege modul în care funcționează modulul de șapte segmente din 4 cifre, trebuie să ne uităm la schemele de mai sus, așa cum se arată pinii A ai tuturor celor patru afișaje sunt conectați pentru a aduna ca unul A și același lucru pentru B, C…. până la DP. Deci, practic, dacă declanșatorul A este activat, atunci toate cele patru A ar trebui să meargă la înălțime, nu?
Dar asta nu se întâmplă. Avem patru pini suplimentari de la D0 la D3 (D0, D1, D2 și D3), care pot fi folosiți pentru a controla care afișaj din cei patru ar trebui să fie ridicat. De exemplu: Dacă am nevoie ca ieșirea mea să fie prezentă doar pe al doilea afișaj, atunci doar D1 ar trebui să fie ridicat, păstrând în același timp alți pini (D0, D2 și D3) la un nivel scăzut. Pur și simplu putem selecta care afișaj trebuie să fie activ folosind pinii de la D0 la D3 și ce caracter să fie afișat folosind pinii de la A la DP.
Conectarea modulului cu 4 cifre din 7 segmente cu Raspberry Pi:
Să vedem cum, cum putem conecta acest modul din 4 cifre din 7 segmente cu Raspberry Pi. Modulul cu 7 segmente are 16 pini așa cum se arată mai jos. Este posibil ca modulul dvs. să fie mai mic, dar nu vă faceți griji că va avea în continuare următoarele cu siguranță
- 7 sau 8 pini de segment (aici pini care încep de la 1 la 8)
- Știftul de masă (aici pinul 11)
- Pinuri de 4 cifre (aici pinii 13-16)
Mai jos este prezentată schema pentru ceasul digital raspberry pi prin conectarea modulului de afișare cu șapte segmente din 4 cifre cu Raspberry Pi:
Tabelul următor vă va ajuta, de asemenea, în realizarea conexiunilor și verificarea acesteia conform schemelor prezentate mai sus.
S. Nu |
Numărul GPIO Rsp Pi |
Număr PIN Rsp Pi |
7-numele segmentului |
Număr pin 7-Seg (aici în acest modul) |
1 |
GPIO 26 |
PIN 37 |
Segmentați a |
1 |
2 |
GPIO 19 |
PIN 35 |
Segmentul b |
2 |
3 |
GPIO 13 |
PIN 33 |
Segmentul c |
3 |
4 |
GPIO 6 |
PIN 31 |
Segmentul d |
4 |
5 |
GPIO 5 |
PIN-ul 29 |
Segmentul e |
5 |
6 |
GPIO 11 |
PIN 23 |
Segmentul f |
6 |
7 |
GPIO 9 |
PIN 21 |
Segmentați g |
7 |
8 |
GPIO 10 |
PIN 19 |
Segmentați DP |
8 |
9 |
GPIO 7 |
PIN 26 |
Cifra 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
Cifra 2 |
14 |
11 |
GPIO 25 |
PIN 22 |
Cifra 3 |
15 |
12 |
GPIO 24 |
PIN 18 |
Cifra 4 |
16 |
13 |
Sol |
Sol |
Sol |
11 |
Identificați pinii de pe modulul dvs. și sunteți bine să continuați conexiunile. Reperarea pinilor GPIO în Raspberry pi ar putea fi o sarcină puțin dificilă, așa că v-am oferit această imagine pentru Pinii GPIO.
Programarea Raspberry Pi:
Aici folosim limbajul de programare Python pentru programarea RPi. Există multe modalități de a vă programa Raspberry Pi. În acest tutorial folosim IDE-ul Python 3, deoarece este cel mai utilizat. Programul complet Python este dat la sfârșitul acestui tutorial. Aflați mai multe despre program și rulați codul în Raspberry Pi aici.
Vom vorbi despre câteva comenzi pe care le vom folosi în programul PYHTON pentru acest proiect, Mai întâi vom importa fișierul GPIO din bibliotecă, funcția de mai jos ne permite să programăm pinii GPIO ai PI. De asemenea, redenumim „GPIO” în „IO”, așa că în program ori de câte ori dorim să ne referim la pinii GPIO vom folosi cuvântul „IO”. Am importat, de asemenea, de timp și datetime pentru a citi valoarea timpului de la RSP Pi.
import RPi.GPIO ca timp de import GPIO, datetime
Uneori, când pinii GPIO, pe care încercăm să îi folosim, ar putea să îndeplinească alte funcții. În acest caz, vom primi avertismente în timpul executării programului. Comanda de mai jos îi spune PI să ignore avertismentele și să continue programul.
IO.setwarnings (Fals)
Putem consulta pinii GPIO ai PI, fie prin numărul pinului la bord, fie prin numărul funcției lor. La fel ca „PIN 29” de pe tablă este „GPIO5”. Deci, spunem aici fie că vom reprezenta pinul aici cu „29” sau „5”. GPIO.BCM înseamnă că vom reprezenta folosind 5 pentru GPIO5 pinul 29.
IO.setmode (GPIO.BCM)
Ca întotdeauna, ar trebui să începem prin inițializarea pinilor, aici atât pinii segmentului, cât și pinii digitali sunt pinii de ieșire. În scopul programării, formăm matrici pentru pini de segment și le inițializăm la „0” după ce le declarăm ca GPIO.
segment8 = (26,19,13,6,5,11,9,10) pentru segmentul din segment8: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
În mod similar, pentru pinii digitali îi declarăm drept pin de ieșire și îi facem „0” în mod implicit
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) #Off initial #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) #Off initial #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) #Off initial #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) #Off initial
Trebuie să formăm tablouri pentru a afișa fiecare număr pe un afișaj cu șapte segmente. Pentru a afișa un număr, trebuie să controlăm toți cei 7 pini de segment (pinii excluși), adică fie trebuie să fie dezactivați, fie să fie aprinși. De exemplu, pentru a afișa numărul 5, facem următoarea dispunere
S. Nu |
Numărul GPIO Rsp Pi |
7-numele segmentului |
Stare pentru a afișa „5”. (0-> OFF, 1-> ON) |
1 |
GPIO 26 |
Segmentați a |
1 |
2 |
GPIO 19 |
Segmentul b |
1 |
3 |
GPIO 13 |
Segmentul c |
0 |
4 |
GPIO 6 |
Segmentul d |
1 |
5 |
GPIO 5 |
Segmentul e |
1 |
6 |
GPIO 11 |
Segmentul f |
0 |
7 |
GPIO 9 |
Segmentați g |
1 |
În mod similar, avem un număr de ordine pentru toate numerele și alfabetele. Puteți scrie pe cont propriu sau puteți utiliza graficul de mai jos.
Cu aceste date putem forma matricele pentru fiecare număr din programul nostru python așa cum se arată mai jos.
nul = zero = unu = doi = trei = patru = cinci = șase = șapte = opt = nouă =
Dacă urmăriți programul, va exista o funcție pentru a afișa fiecare caracter pe afișajul nostru pe 7 segmente, dar, să omiteți acest lucru pentru moment și să intrați în bucla infinită de timp . Unde citiți ora prezentă din Raspberry Pi și împărțiți valoarea timpului între patru variabile. De exemplu, dacă timpul este 10.45, atunci variabila h1 va avea 1, h2 va avea 0, m1 va avea 4vand m2 va avea 5.
now = datetime.datetime.now () hour = now.hour minute = now.minute h1 = hour / 10 h2 = hour% 10 m1 = minute / 10 m2 = minute% 10 print (h1, h2, m1, m2)
Trebuie să afișăm aceste patru valori variabile pe cele patru cifre, respectiv. Pentru a scrie o valoare a variabilei într-o cifră putem folosi următoarele rânduri. Aici sunt afișate pe cifra 1 făcând-o să meargă la nivel înalt, apoi funcția print_segment (variabilă) va fi apelată pentru a afișa valoarea în variabilă pe afișajul segmentului. S-ar putea să vă întrebați de ce avem o întârziere după aceea și de ce dezactivăm această cifră după aceasta.
GPIO.output (7, 1) #Porniți cifra unu print_segment (h1) #Print h1 pe segmentul time.sleep (delay_time) GPIO.output (7, 0) #Dezactivați cifra One
Motivul este că, după cum știm, putem afișa o singură cifră la un moment dat, dar avem patru cifre de afișat și numai dacă sunt afișate toate cele patru cifre, numărul complet de patru cifre va fi vizibil pentru utilizator.
Deci, cum se afișează toate cele 4 cifre în același timp ?
Norocos pentru noi MPU-ul nostru este mult mai rapid decât un ochi uman, deci ceea ce facem de fapt: afișăm câte o cifră la un moment dat, dar o facem foarte repede așa cum se arată mai sus.
Selectăm afișarea cu o cifră, așteaptă 2 ms (variabilă delay_time), astfel încât MPU și segmentul 7 să o poată procesa, apoi oprim cifra respectivă și trecem la următoarea cifră și facem același lucru până când ajungem la ultima cifră. Această întârziere de 2 ms nu poate fi observată de un ochi uman și toate cele patru cifre par să fie ACTIVE în același timp.
Ultimul lucru pe care l-ați învățat este să știți cum funcționează funcția print_segment (variabilă) . În această funcție folosim matricele pe care le-am declarat până acum. Deci, orice variabilă pe care o trimitem acestei funcții ar trebui să aibă valoarea între (0-9), caracterul variabil va primi această valoare și o va compara pentru valoarea reală. Aici variabila este comparată cu „1”. În mod similar, comparăm cu toate numerele de la 0 la 9. Dacă este o potrivire, folosim matricele și atribuim fiecare valoare pinilor segmentului respectiv, așa cum se arată mai jos.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Afișați timpul pe 4 cifre cu 7 segmente folosind Raspberry Pi:
Utilizați schema și codul prezentate aici pentru a face conexiunile și pentru a programa raspberry pi în consecință. După ce totul este finalizat, lansați programul și ar trebui să găsiți ora curentă afișată pe afișajul cu șapte segmente. Dar, sunt puține lucruri pe care trebuie să le verificați înainte de aceasta
- Asigurați-vă că ați setat Raspberry Pi cu ora curentă, în cazul în care funcționează în timp offline.
- Alimentați-vă Raspberry pi cu un adaptor și nu cu laptopul / computerul, deoarece cantitatea de curent extrasă de afișajul pe 7 segmente este mare, iar portul USB nu îl poate sursa.
Dacă totul funcționează așa cum era de așteptat, atunci ar trebui să găsiți așa ceva mai jos.
Funcționarea completă a acestui ceas cu zmeură pi poate fi verificată și la videoclipul prezentat mai jos. Sper că ți-a plăcut proiectul și ți-a plăcut să construiești unul. Spuneți-mi ce credeți sau dacă aveți nevoie de ajutor.