- 7-segmentni in 4-mestni 7-segmentni prikazovalni modul:
- Povezava 4-mestnega 7-segmentnega modula z Raspberry Pi:
- Programiranje vašega Raspberry Pi:
- Prikaz časa na 4-mestnem 7-segmentu z uporabo Raspberry Pi:
Vsi vemo, da je Raspberry Pi je čudovita razvojna platforma, ki temelji na mikroprocesorju ARM. S svojo visoko računsko močjo lahko naredi čudeže v rokah ljubiteljev elektronike ali študentov. Vse to je mogoče le, če vemo, kako omogočiti interakcijo z resničnim svetom in analizirati podatke prek neke izhodne naprave. Obstaja veliko senzorjev, ki lahko zaznajo določene parametre iz realnega časa in jih prenesejo v digitalni svet, mi pa jih analiziramo, če jih gledamo bodisi na LCD zaslonu ali kakšnem drugem zaslonu. Vedno pa ne bi bilo varčno uporabiti LCD zaslona s PI za prikaz majhne količine podatkov. Tu raje uporabljamo alfanumerični LCD zaslon 16x2 ali 7-segmentni zaslon. Že smo se naučili, kako uporabljati alfanumerični LCD in enosegmentni 7-segmentni zaslon z Raspberry pi. Danes bomoVmesnik 4-mestni sedemsegmentni prikazovalni modul z Raspberry Pi in prikaz časa nad njim.
Čeprav je 16-krat alfanumerični LCD veliko bolj udoben kot 7-segmentni zaslon, je malo primerov, ko bi 7-segmentni zaslon prišel bolj kot LCD zaslon. LCD ima pomanjkljivost majhne velikosti znakov in bo za vaš projekt pretiran, če nameravate prikazati nekatere številčne vrednosti. 7-segmenti imajo tudi prednost pred slabimi svetlobnimi razmerami in jih je mogoče gledati iz večjih kotov kot običajni LCD zaslon. Torej, začnimo vedeti.
7-segmentni in 4-mestni 7-segmentni prikazovalni modul:
7-segmentni zaslon ima sedem segmentov, vsak segment pa ima v sebi eno LED, ki prikazuje številke z osvetlitvijo ustreznih segmentov. Če želite, da 7-segment prikazuje številko "5", potem morate svetleti segmente a, f, g, c in d tako, da so njihovi ustrezni zatiči visoki. Obstajata dve vrsti 7-segmentnih zaslonov: Common Cathode in Common Anode, tu uporabljamo sedemsegmentni prikaz Common Cathode. Več o 7-segmentnem prikazu lahko preberete tukaj.
Zdaj vemo, kako prikazati želeni številski znak na enem samem 7-segmentnem zaslonu. Jasno pa je, da bi potrebovali več kot en 7-segmentni zaslon, da bi posredovali kakršne koli informacije, ki imajo več kot eno števko. Torej, v tej vadnici bomo uporabili 4-mestni 7-segmentni prikazni modul, kot je prikazano spodaj.
Kot lahko vidimo, so med seboj povezani štirje sedem segmentni prikazi. Vemo, da bo imel vsak 7-segmentni modul 10 zatičev, za 4 sedemsegmentne prikazovalnike pa bi bilo skupno 40 zatičev in težko bi bilo, da bi jih kdo spajkal na pikčasto ploščo, zato toplo priporočam, da vsak kupi modul ali pa si izdelajte lastno tiskano vezje za uporabo 4-mestnega 7-segmentnega zaslona. Shema povezav za isto je prikazana spodaj:
Da bi razumeli, kako deluje 4-mestni sedemsegmentni modul, moramo preučiti zgornje sheme, kot je prikazano, zatiči A vseh štirih zaslonov so povezani, da se zberejo kot ena A in enaka za B, C…. do DP. Torej, v bistvu, če je sprožilec A vklopljen, bi morali iti vsi štirje A visoko, ne?
Toda to se ne zgodi. Na voljo imamo dodatne štiri zatiči od D0 do D3 (D0, D1, D2 in D3), s katerimi lahko nadzorujemo, kateri prikaz od štirih naj bo visok. Na primer: Če moram, da je moj izhod prisoten samo na drugem zaslonu, naj bo le D1 postavljen visoko, drugi zatiči (D0, D2 in D3) pa naj bodo nizki. Preprosto lahko izberemo, kateri zaslon mora biti aktiven s pomočjo zatičev od D0 do D3 in kateri znak naj bo prikazan z zatiči od A do DP.
Povezava 4-mestnega 7-segmentnega modula z Raspberry Pi:
Poglejmo, kako, kako lahko ta 4-mestni 7-segmentni modul povežemo z našo Raspberry Pi. 7-segmentni modul ima 16 nožic, kot je prikazano spodaj. Vaš modul ima morda manj, vendar ne skrbite, zagotovo bo vseeno imel naslednje
- 7 ali 8 segmentnih nožic (tukaj nožice od 1 do 8)
- Ozemljitveni zatič (tukaj zatič 11)
- 4-mestni zatiči (tukaj zatiči 13 do 16)
Spodaj je shema digitalne ure Raspberry Pi s povezavo štirimestnega sedemsegmentnega prikazovalnega modula z Raspberry Pi:
Naslednja tabela vam bo prav tako pomagala pri vzpostavljanju povezav in preverjanju, ali so v skladu z zgoraj prikazanimi shemami.
S. Št |
Rsp Pi GPIO številka |
Številka PIN Rsp Pi |
7-segmentno ime |
7-Seg pin številka (tukaj v tem modulu) |
1. |
GPIO 26 |
PIN 37 |
Odsek a |
1. |
2. |
GPIO 19 |
PIN 35 |
Odsek b |
2. |
3. |
GPIO 13 |
PIN 33 |
Odsek c |
3. |
4. |
GPIO 6 |
PIN 31 |
Odsek d |
4. |
5. |
GPIO 5 |
PIN 29 |
Odsek e |
5. |
6. |
GPIO 11 |
PIN 23 |
Odsek f |
6. |
7. |
GPIO 9 |
PIN 21 |
Segment g |
7. |
8. |
GPIO 10 |
PIN 19 |
Odsek DP |
8. |
9. |
GPIO 7 |
PIN 26 |
Številka 1 |
13. |
10. |
GPIO 8 |
PIN 24 |
Številka 2 |
14. |
11. |
GPIO 25 |
PIN 22 |
Številka 3 |
15. |
12. |
GPIO 24 |
PIN 18 |
Številka 4 |
16. |
13. |
Tla |
Tla |
Tla |
11. |
Poiščite nožice na vašem modulu in vsi boste nadaljevali s povezavami. Opazovanje zatičev GPIO v Raspberry pi je morda nekoliko zahtevna naloga, zato sem vam priskrbel to sliko za GPIO zatiče.
Programiranje vašega Raspberry Pi:
Tu uporabljamo programski jezik Python za programiranje RPi. Obstaja veliko načinov za programiranje vašega Raspberry Pi. V tej vadnici uporabljamo Python 3 IDE, saj je ta najpogosteje uporabljena. Celoten program Python je podan na koncu tega učbenika. Več o programiranju in zagonu kode v Raspberry Pi lahko preberete tukaj.
Govorili bomo o nekaj ukazih, ki jih bomo uporabili v programu PYHTON za ta projekt, Najprej bomo iz knjižnice uvozili datoteko GPIO, spodnja funkcija nam omogoča programiranje GPIO zatičev PI. Prav tako preimenujemo »GPIO« v »IO«, zato bomo v programu, kadar se želimo sklicevati na zatiče GPIO, uporabili besedo »IO«. Uvozili smo tudi čas in datum, da odčitamo vrednost časa iz Rsp Pi.
uvozi RPi.GPIO kot GPIO čas uvoza, datum in čas
Včasih, ko zatiči GPIO, ki jih poskušamo uporabiti, morda opravljajo nekatere druge funkcije. V tem primeru bomo med izvajanjem programa prejeli opozorila. Spodaj ukaz PI-ju sporoči, naj prezre opozorila in nadaljuje s programom.
IO.setwarnings (False)
Zatiče GPIO PI lahko označimo bodisi s številko zatiča na krovu bodisi s številko njihove funkcije. Tako kot »PIN 29« na plošči je »GPIO5«. Torej tukaj povemo, ali bomo tu zastopali pin z '29' ali '5'. GPIO.BCM pomeni, da bomo uporabili 5 za GPIO5 pin 29.
IO.setmode (GPIO.BCM)
Kot vedno bi morali začeti z inicializacijo zatičev, tudi tukaj so segmentni zatiči in številčni zatiči izhodni zatiči. Za namene programiranja oblikujemo polja za segmentne nožice in jih po razglasitvi za GPIO inicializiramo na '0'.
segment8 = (26,19,13,6,5,11,9,10) za segment v segmentu8: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
Podobno pri številskih zatičih jih razglasimo kot izhodne zatiče in jih privzeto nastavimo na '0'
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) #Off off first #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) #Off prvotno #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) #Off off first #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) #Off prvotno
Za prikaz vsake številke na sedemsegmentnem zaslonu moramo oblikovati nize. Za prikaz ene številke moramo nadzorovati vseh 7 segmentnih zatičev (pikčasti zatiči so izključeni), torej jih je treba izklopiti ali vklopiti. Za prikaz številke 5 na primer naredimo naslednji dogovor
S. Št |
Rsp Pi GPIO številka |
7-segmentno ime |
Stanje za prikaz '5'. (0-> IZKLOP, 1-> VKLOP) |
1. |
GPIO 26 |
Odsek a |
1. |
2. |
GPIO 19 |
Odsek b |
1. |
3. |
GPIO 13 |
Odsek c |
0 |
4. |
GPIO 6 |
Odsek d |
1. |
5. |
GPIO 5 |
Odsek e |
1. |
6. |
GPIO 11 |
Odsek f |
0 |
7. |
GPIO 9 |
Segment g |
1. |
Podobno imamo zaporedno številko za vse številke in abecede. Lahko pišete sami ali uporabite spodnji grafikon.
S temi podatki lahko oblikujemo matrike za vsako številko v našem programu python, kot je prikazano spodaj.
nič = nič = ena = dva = tri = štirje = pet = šest = sedem = osem = devet =
Če sledite program bo funkcija za prikaz vsak znak za naše zaslona 7-segmenta, ampak omogoča, preskočite ta za zdaj in se v while neskončno zanko. Kje preberite sedanji čas iz Raspberry Pi in razdelite vrednost časa med štiri spremenljivke. Na primer, če je čas 10.45, bo spremenljivka h1 imela 1, h2 bo imela 0, m1 bo imela 4vand m2 bo imela 5.
zdaj = datetime.datetime.now () ura = zdaj.hour minute = now.minute h1 = ura / 10 h2 = ura% 10 m1 = minuta / 10 m2 = minuta% 10 tiskanje (h1, h2, m1, m2)
Te štiri spremenljivke moramo prikazati na naših štirih številkah. Za zapis vrednosti spremenljivke v številko lahko uporabimo naslednje vrstice. Tu smo prikazani na številki 1 tako, da gre visoko, nato pa bo funkcija print_segment (spremenljivka) poklicana za prikaz vrednosti v spremenljivki na zaslonu segmenta. Morda se sprašujete, zakaj imamo zamudo po tem in zakaj to številko izklopimo po tem.
GPIO.output (7, 1) # Vključi Digit One print_segment (h1) # Natisni h1 na segment time.sleep (delay_time) GPIO.output (7, 0) # Izklopi Digit One
Razlog je v tem, da vemo, da lahko hkrati prikažemo le eno števko, vendar imamo na voljo štiri številke in le, če bodo prikazane vse štiri številke, bo uporabniku vidna celotna štirimestna številka.
Torej, kako prikazati vse 4 številke hkrati ?
Sreča za nas je, da je naš MPU veliko hitrejši od človeškega očesa, zato to, kar dejansko počnemo: prikažemo po eno številko, vendar to storimo zelo hitro, kot je prikazano zgoraj.
Izberemo enomestni prikaz, ki počaka 2 ms (spremenljivka delay_time), tako da ga lahko MPU in 7-segment obdela in nato izklopi to številko ter se premakne na naslednjo številko in stori enako, dokler ne pridemo do zadnje številke. Te zakasnitve 2 ms človeško oko ne more opaziti in zdi se, da so vse štiri številke vklopljene hkrati.
Zadnja stvar, ki se jo naučite, da veste, kako deluje funkcija print_segment (spremenljivka) . Znotraj te funkcije uporabljamo polja, ki smo jih doslej razglasili. Kakršna koli spremenljivka, ki jo pošljemo tej funkciji, bi torej morala imeti vrednost med (0-9), znak spremenljivke bo prejel to vrednost in jo primerjal za realno vrednost. Tu se spremenljivka primerja z '1'. Podobno primerjamo z vsemi števili od 0 do 9. Če gre za ujemanje, uporabimo polja in vsako vrednost dodelimo ustreznim zatičem segmentov, kot je prikazano spodaj.
def print_segment (charector): če charector == 1: za i v obsegu (7): GPIO.output (segment8, one)
Prikaz časa na 4-mestnem 7-segmentu z uporabo Raspberry Pi:
Za povezave uporabite ustrezno shemo in kodo, ki ste jo podali tukaj, in ustrezno programirajte svoj malina pi. Ko je vse končano, samo zaženite program in na sedemsegmentnem zaslonu najdemo trenutni čas. Pred tem pa morate preveriti nekaj stvari
- Prepričajte se, da ste Raspberry Pi nastavili s trenutnim časom za vsak slučaj, če deluje v času brez povezave.
- Napajajte Raspberry pi z adapterjem in ne s prenosnikom / računalnikom, ker je sedmi segmentni zaslon porabil veliko toka in ga vrata USB ne morejo nahajati.
Če vse deluje po pričakovanjih, potem najdite nekaj takega spodaj.
Popolno delovanje te ure maline pi lahko preverite tudi na spodnjem videoposnetku. Upam, da vam je bil projekt všeč in ste uživali pri njegovi izdelavi. Sporočite mi, kaj mislite ali če potrebujete pomoč.