- 7-segment og 4-cifret 7-segment display modul:
- Tilslutning af 4-cifret 7-segment modul med Raspberry Pi:
- Programmering af din Raspberry Pi:
- Visningstid på 4-cifret 7-segment ved hjælp af Raspberry Pi:
Vi ved alle, at Raspberry Pi er en vidunderlig udviklingsplatform baseret på ARM-mikroprocessor. Med sin høje beregningskraft kan den udføre vidundere i hænderne på elektronikhobbyister eller studerende. Alt dette kan kun være muligt, hvis vi ved, hvordan vi får det til at interagere med den virkelige verden og analysere dataene gennem en eller anden outputenhed. Der er mange sensorer, som kan registrere bestemte parametre fra realtidens verden og overføre dem til en digital verden, og vi analyserer dem, og ser dem enten på en LCD-skærm eller en anden skærm. Men det ville altid ikke være økonomisk at bruge en LCD-skærm med PI til visning af lille mængde data. Det er her, vi foretrækker at bruge 16x2 alfanumerisk LCD-skærm eller 7-segment display. Vi har allerede lært, hvordan man bruger en alfanumerisk LCD og et enkelt segment 7-segment display med Raspberry pi. I dag vil viInterface 4-cifret Seven Segment Display Module med Raspberry Pi og display Time over det.
Selvom 16x2 alfanumerisk LCD er meget mere behagelig end 7-segment display, er der få scenarier, hvor en 7-segment skærm ville komme lettere end en LCD-skærm. LCD lider af ulempen ved at have lav karakterstørrelse og vil være overkill for dit projekt, hvis du bare planlægger at vise nogle numeriske værdier. 7-segmenter har også fordelen mod dårlig belysningstilstand og kan ses fra lagervinkler end en normal LCD-skærm. Så lad os begynde at vide det.
7-segment og 4-cifret 7-segment display modul:
7 Segment Display har syv segmenter i sig, og hvert segment har en LED indeni for at vise tallene ved at belyse de tilsvarende segmenter. Ligesom hvis du vil have 7-segmentet til at vise tallet "5", skal du gløde segment a, f, g, c og d ved at gøre deres tilsvarende stifter høje. Der er to typer 7-segment skærme: Common Cathode og Common Anode, her bruger vi Common Cathode syv segment display. Lær mere om 7-segmentvisning her.
Nu ved vi, hvordan vi viser vores ønskede numeriske tegn på et enkelt 7-segment display. Men det er ret tydeligt, at vi har brug for mere end et 7-segment display for at formidle information, der er mere end et ciffer. Så i denne vejledning bruger vi et 4-cifret 7-segment display modul som vist nedenfor.
Som vi kan se, er der fire syv segmentskærme forbundet sammen. Vi ved, at hvert 7-segment-modul vil have 10 ben og for 4 syv segment-skærme vil der være 40 ben i alt, og det ville være hektisk for alle at lodde dem på et prikbræt, så jeg vil meget anbefale nogen at købe et modul eller lav dit eget printkort til brug af et 4-cifret 7-segment display. Forbindelsesskemaet for det samme er vist nedenfor:
For at forstå hvordan 4-cifret syv segmentmodul fungerer, skal vi se på ovenstående skemaer, som vist er A-stifterne på alle fire skærme forbundet til at samles som en A og den samme for B, C…. op til DP. Så hvis udløseren A er slået til, så skal alle fire A'er gå højt, ikke?
Men det sker ikke. Vi har yderligere fire ben fra D0 til D3 (D0, D1, D2 og D3), som kan bruges til at kontrollere, hvilken skærm ud af de fire skal gå højt. For eksempel: Hvis jeg kun har brug for, at min output er til stede på det andet display, skal kun D1 gøres højt, mens andre ben (D0, D2 og D3) holdes så lave. Vi kan ganske enkelt vælge, hvilket display der skal gå aktivt ved hjælp af benene fra D0 til D3, og hvilket tegn der skal vises ved hjælp af benene fra A til DP.
Tilslutning af 4-cifret 7-segment modul med Raspberry Pi:
Lad os se hvordan, hvordan vi kan forbinde dette 4-cifrede 7-segment modul med vores Raspberry Pi. 7-segmentmodulet har 16 ben som vist nedenfor. Dit modul kan have mindre, men rolig, det vil stadig have følgende for sikker
- 7 eller 8 segmentstifter (her stifter starter fra 1 til 8)
- Jordstift (her pin 11)
- 4-cifrede ben (her ben 13 til 16)
Nedenfor er skematisk vist for hindbær pi digitalt ur ved at forbinde 4-cifret syv segment display modul med Raspberry Pi:
Følgende tabel hjælper dig også med at oprette forbindelser og kontrollere, at den er i overensstemmelse med skemaerne vist ovenfor.
S. nr |
Rsp Pi GPIO-nummer |
Rsp Pi PIN-nummer |
7-segment navn |
7-seg pin nummer (her i dette modul) |
1 |
GPIO 26 |
PIN-kode 37 |
Segment a |
1 |
2 |
GPIO 19 |
PIN-kode 35 |
Segment b |
2 |
3 |
GPIO 13 |
PIN-kode 33 |
Segment c |
3 |
4 |
GPIO 6 |
PIN-kode 31 |
Segment d |
4 |
5 |
GPIO 5 |
PIN-kode 29 |
Segment e |
5 |
6 |
GPIO 11 |
PIN-kode 23 |
Segment f |
6 |
7 |
GPIO 9 |
PIN-kode 21 |
Segment g |
7 |
8 |
GPIO 10 |
PIN 19 |
Segment DP |
8 |
9 |
GPIO 7 |
PIN-kode 26 |
Ciffer 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
Ciffer 2 |
14 |
11 |
GPIO 25 |
PIN-kode 22 |
Ciffer 3 |
15 |
12 |
GPIO 24 |
PIN-kode 18 |
Ciffer 4 |
16 |
13 |
Jord |
Jord |
Jord |
11 |
Identificer stifterne på dit modul, og du er god til at fortsætte med tilslutningerne. At spotte GPIO-benene i Raspberry pi kan være en smule udfordrende opgave, så jeg har givet dig dette billede til GPIO-pins.
Programmering af din Raspberry Pi:
Her bruger vi Python Programming sprog til programmering af RPi. Der er mange måder at programmere din Raspberry Pi på. I denne vejledning bruger vi Python 3 IDE, da det er den mest anvendte. Det komplette Python-program gives i slutningen af denne vejledning. Lær mere om program og kør kode i Raspberry Pi her.
Vi vil tale om få kommandoer, som vi skal bruge i PYHTON-programmet til dette projekt, Først skal vi importere GPIO-filer fra biblioteket, nedenstående funktion giver os mulighed for at programmere GPIO-ben på PI. Vi omdøber også "GPIO" til "IO", så når vi vil henvise til GPIO-ben i programmet, bruger vi ordet 'IO'. Vi har også importeret tid og datatid for at læse tidsværdien fra Rsp Pi.
importer RPi.GPIO som GPIO importtid, datetime
Nogle gange, når GPIO-stifterne, som vi prøver at bruge, udfører måske nogle andre funktioner. I så fald modtager vi advarsler, mens vi udfører programmet. Kommandoen nedenfor fortæller PI at ignorere advarslerne og fortsætte med programmet.
IO.setwarnings (Falsk)
Vi kan henvise GPIO-benene på PI, enten ved pin-nummer om bord eller ved deres funktionsnummer. Ligesom 'PIN 29' på tavlen er 'GPIO5'. Så vi fortæller her, enten skal vi repræsentere stiften her med '29' eller '5'. GPIO.BCM betyder, at vi repræsenterer at bruge 5 til GPIO5 pin 29.
IO.setmode (GPIO.BCM)
Som altid skal vi begynde med at initialisere stifterne, her er både segmentstifterne og cifferstifterne outputstifter. Til programmeringsformål danner vi arrays for segmentstifter og initialiserer dem til '0' efter at have erklæret dem som GPIO.OUT
segment8 = (26,19,13,6,5,11,9,10) for segment i segment8: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
Tilsvarende for de cifrede stifter erklærer vi dem som outputstifter og gør dem som standard '0'
#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 off #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) # Off initial
Vi er nødt til at danne arrays for at vise hvert nummer på et syv segment display. For at få vist et nummer er vi nødt til at kontrollere alle 7 segmentstifter (punktudelukket ekskl.), Det vil sige at de enten skal slukkes eller tændes. For eksempel for at vise nummer 5 har vi lavet følgende arrangement
S. nr |
Rsp Pi GPIO-nummer |
7-segment navn |
Status for at vise '5'. (0-> FRA, 1-> TIL) |
1 |
GPIO 26 |
Segment a |
1 |
2 |
GPIO 19 |
Segment b |
1 |
3 |
GPIO 13 |
Segment c |
0 |
4 |
GPIO 6 |
Segment d |
1 |
5 |
GPIO 5 |
Segment e |
1 |
6 |
GPIO 11 |
Segment f |
0 |
7 |
GPIO 9 |
Segment g |
1 |
På samme måde har vi sekvensnummer for alle tal og alfabeter. Du kan skrive alene eller bruge diagrammet nedenfor.
Med disse data kan vi danne arrays for hvert nummer i vores python-program som vist nedenfor.
null = nul = en = to = tre = fire = fem = seks = syv = otte = ni =
Hvis du følger programmet vil der være en funktion til at vise hver karakter til vores 7-segment display, men lader springe dette for nu og komme ind i , mens uendelig løkke. Hvor læses den aktuelle tid fra Raspberry Pi og opdeles tidsværdien mellem fire variabler. For eksempel, hvis tiden er 10.45, vil variablen h1 have 1, h2 vil have 0, m1 vil have 4vand m2 vil have 5.
nu = datetime.datetime.now () time = nu. time time = nu. minut h1 = time / 10 h2 = time% 10 m1 = minut / 10 m2 = minut% 10 udskrivning (h1, h2, m1, m2)
Vi skal vise disse fire variable værdier på henholdsvis vores fire cifre. For at skrive en værdi af variabel til et ciffer kan vi bruge følgende linjer. Her vises vi på ciffer 1 ved at gøre det til at gå højt, så kaldes funktionen print_segment (variabel) for at vise værdien i variablen på segmentdisplayet. Du undrer dig måske over, hvorfor vi har en forsinkelse efter det, og hvorfor vi slukker dette ciffer efter dette.
GPIO.output (7, 1) # Tænd for Digit One print_segment (h1) # Print H1 on segment time. Sleep (delay_time) GPIO.output (7, 0) # Sluk for Number One
Årsagen er, som vi ved, kan vi kun vise et ciffer ad gangen, men vi har fire cifre, der skal vises, og kun hvis alle de fire cifre vises, vises det komplette firecifrede nummer for brugeren.
Så hvordan viser alle 4 cifre på samme tid ?
Heldig for os er vores MPU meget hurtigere end et menneskeligt øje, så hvad vi faktisk gør: vi viser et ciffer ad gangen, men vi gør det meget hurtigt som vist ovenfor.
Vi vælger et cifret, hvor det venter på 2 ms (variabel forsinkelsestid), så MPU og 7-segmentet kan behandle det og derefter slukke for det ciffer og gå videre til det næste ciffer og gøre det samme, indtil vi når det sidste ciffer. Denne forsinkelse på 2 ms kan ikke observeres af et menneskeligt øje, og alle de fire cifre ser ud til at være TIL på samme tid.
Den sidste ting at lære det at vide, hvordan funktionen print_segment (variabel) fungerer. Inde i denne funktion bruger vi de arrays, vi hidtil har erklæret. Så uanset hvilken variabel, vi sender til denne funktion, skal have værdien mellem (0-9), vil variabeltegnet modtage denne værdi og sammenligne den med reel værdi. Her sammenlignes variablen med '1'. På samme måde sammenligner vi med alle tal fra 0 til 9. Hvis det er et match, bruger vi arrays og tildeler hver værdi til de respektive segmentstifter som vist nedenfor.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Visningstid på 4-cifret 7-segment ved hjælp af Raspberry Pi:
Brug skemaet og koden, der er angivet her, for at oprette forbindelser og programmere din hindbær pi i overensstemmelse hermed. Når alt er gjort, skal du bare starte programmet, og du skal finde den aktuelle tid, der vises i syv segmentvisningen. Men der er få ting, du skal kontrollere før dette
- Sørg for, at du har indstillet din Raspberry Pi med aktuel tid, bare hvis det kører på offline-tid.
- Strøm din Raspberry pi med en adapter og ikke med din bærbare computer / computer, fordi strømmen trukket af 7-segmentets skærm er høj, og din USB-port ikke kan hente den.
Hvis alt fungerer som forventet, skal du finde noget lignende nedenfor.
Den komplette funktion af dette hindbær pi-ur kan også kontrolleres i videoen nedenfor. Håber du kunne lide projektet og nød at bygge et. Fortæl mig, hvad du synes, eller hvis du har brug for hjælp.