- 7-segment og 4-sifret 7-segment skjermmodul:
- Koble til 4-sifret 7-segmentmodul med Raspberry Pi:
- Programmering av Raspberry Pi:
- Vis tid på 4-sifret 7-segment ved hjelp av Raspberry Pi:
Vi vet alle at Raspberry Pi er en fantastisk utviklingsplattform basert på ARM-mikroprosessor. Med sin høye beregningskraft kan den gjøre underverker i hendene på elektronikkhobbyister eller studenter. Alt dette kan bare være mulig hvis vi vet hvordan vi skal få det til å samhandle med den virkelige verden og analysere dataene gjennom en eller annen utdataenhet. Det er mange sensorer som kan oppdage visse parametere fra sanntidsverdenen og overføre dem til en digital verden, og vi analyserer dem og ser dem enten på en LCD-skjerm eller en annen skjerm. Men det ville alltid ikke være økonomisk å bruke en LCD-skjerm med PI for å vise liten datamengde. Det er her vi foretrekker å bruke 16x2 alfanumerisk LCD-skjerm eller 7-segment skjerm. Vi har allerede lært hvordan vi bruker en alfanumerisk LCD-skjerm og et enkelt segment 7-segment skjerm med Raspberry pi. I dag vil viGrensesnitt 4-sifret Seven Segment Display Module med Raspberry Pi og display Time over it.
Selv om 16x2 alfanumerisk LCD er mye mer behagelig enn 7-segment skjerm, er det få scenarier der en 7-segment skjerm ville komme lettere enn en LCD-skjerm. LCD lider av ulempen med å ha lav tegnstørrelse og vil være for mye for prosjektet ditt hvis du bare planlegger å vise noen numeriske verdier. 7-segmenter har også fordelen mot dårlig lysforhold og kan sees fra lagervinkler enn en vanlig LCD-skjerm. Så la oss begynne å vite det.
7-segment og 4-sifret 7-segment skjermmodul:
7 Segment Display har syv segmenter i seg, og hvert segment har en LED inni for å vise tallene ved å lyse opp de tilsvarende segmentene. Som om du vil at 7-segmentet skal vise tallet "5", må du gløde segment a, f, g, c og d ved å gjøre de tilsvarende pinnene høye. Det er to typer 7-segment skjermer: Common Cathode og Common Anode, her bruker vi Common Cathode syv segment display. Lær mer om 7 segmentvisning her.
Nå vet vi hvordan vi kan vise ønsket numerisk tegn på en enkelt 7-segment skjerm. Men det er ganske tydelig at vi trenger mer enn ett 7-segment display for å formidle informasjon som er mer enn ett siffer. Så i denne opplæringen bruker vi en firesifret 7-segment displaymodul som vist nedenfor.
Som vi kan se er det Four Seven Segment Displays koblet sammen. Vi vet at hver 7-segmentmodul vil ha 10 pinner, og for 4 syv segmentdisplayer vil det være 40 pinner totalt, og det vil være hektisk for alle å lodde dem på et prikkbrett, så jeg vil anbefale alle å kjøpe en modul eller lag din egen PCB for å bruke en firesifret 7-segment skjerm. Tilkoblingsskjemaet for det samme er vist nedenfor:
For å forstå hvordan firesifret syv-segmentmodul fungerer, må vi se på skjemaene ovenfor, som vist er A-pinnene på alle fire skjermene koblet til for å samles som en A og den samme for B, C…. opp til DP. Så hvis utløser A er på, så burde alle fire Aene gå høyt, ikke sant?
Men det skjer ikke. Vi har ytterligere fire pinner fra D0 til D3 (D0, D1, D2 og D3) som kan brukes til å kontrollere hvilken skjerm av de fire som skal gå høyt. For eksempel: Hvis jeg trenger at utdataene mine bare er til stede på den andre skjermen, bør bare D1 gjøres høyt mens andre pinner (D0, D2 og D3) holdes så lave. Bare vi kan velge hvilken skjerm som skal gå aktiv ved hjelp av pinnene fra D0 til D3 og hvilket tegn som skal vises ved hjelp av pinnene fra A til DP.
Koble til 4-sifret 7-segmentmodul med Raspberry Pi:
La oss se hvordan, hvordan vi kan koble denne firesifrede 7-segmentmodulen til vår Raspberry Pi. 7-segmentmodulen har 16 pinner som vist nedenfor. Din modul kan ha mindre, men ikke bekymre deg, det vil fortsatt ha følgende helt sikkert
- 7 eller 8 segmentpinner (her pinner fra 1 til 8)
- Jordstift (her pin 11)
- Firesifrede pinner (her pinner 13 til 16)
Nedenfor er skjemaet for bringebær pi digital klokke ved å koble 4-sifret syv segment skjermmodul med Raspberry Pi:
Tabellen nedenfor vil også hjelpe deg med å lage tilkoblingene og verifisere at den er i henhold til skjemaene vist ovenfor.
S. nr |
Rsp Pi GPIO-nummer |
Rsp Pi PIN-nummer |
7-segmentnavn |
7-seg pin nummer (her i denne modulen) |
1 |
GPIO 26 |
PIN-kode 37 |
Segment a |
1 |
2 |
GPIO 19 |
PIN-kode 35 |
Segment b |
2 |
3 |
GPIO 13 |
PIN 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 26 |
Siffer 1 |
1. 3 |
10 |
GPIO 8 |
PIN 24 |
Siffer 2 |
14 |
11 |
GPIO 25 |
PIN-kode 22 |
Siffer 3 |
15 |
12 |
GPIO 24 |
PIN-kode 18 |
Siffer 4 |
16 |
1. 3 |
Bakke |
Bakke |
Bakke |
11 |
Identifiser pinnene på modulen din, og du er god til å fortsette med tilkoblingene. Å få øye på GPIO-pinnene i Raspberry pi kan være en litt utfordrende oppgave, så jeg har gitt deg dette bildet til GPIO Pins.
Programmering av Raspberry Pi:
Her bruker vi Python-programmeringsspråk for programmering av RPi. Det er mange måter å programmere Raspberry Pi på. I denne opplæringen bruker vi Python 3 IDE, siden den er den mest brukte. Hele Python-programmet er gitt på slutten av denne opplæringen. Lær mer om program og kjør kode i Raspberry Pi her.
Vi vil snakke om få kommandoer som vi skal bruke i PYHTON-programmet for dette prosjektet, Først skal vi importere GPIO-filer fra biblioteket, med funksjonen nedenfor kan vi programmere GPIO-pinner på PI. Vi omdøper også “GPIO” til “IO”, så når vi vil referere til GPIO-pinner i programmet, bruker vi ordet 'IO'. Vi har også importert tid og datatid for å lese verdien av tid fra Rsp Pi.
importer RPi.GPIO som GPIO importtid, datetime
Noen ganger, når GPIO-pinnene, som vi prøver å bruke, gjør noen andre funksjoner. I så fall vil vi motta advarsler mens vi kjører programmet. Kommandoen nedenfor forteller PI å ignorere advarslene og fortsette med programmet.
IO.setwarnings (False)
Vi kan henvise GPIO-pinnene til PI, enten med pin-nummer om bord eller etter deres funksjonsnummer. Som 'PIN 29' på tavlen er 'GPIO5'. Så vi forteller her at enten skal vi representere nålen her med '29' eller '5'. GPIO.BCM betyr at vi vil representere bruk av 5 for GPIO5 pin 29.
IO.setmode (GPIO.BCM)
Som alltid bør vi begynne med å initialisere pinnene, her er både segmentpinnene og sifferpinnene utgangspinner. For programmeringsformål danner vi matriser for segmentpinner og initialiserer dem til '0' etter å ha erklært 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 sifferpinnene erklærer vi dem som utgangspinner og gjør dem '0' som standard
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) # Off off #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
Vi må danne matriser for å vise hvert nummer på en syv segmentskjerm. For å vise ett nummer må vi kontrollere alle de 7 segmentpinnene (ekskludert prikkpinne), det vil si at de enten må skrus av eller på. For eksempel for å vise nummer 5 har vi laget følgende ordning
S. nr |
Rsp Pi GPIO-nummer |
7-segmentnavn |
Status for å vise '5'. (0-> AV, 1-> PÅ) |
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åte har vi sekvensnummer for alle tall og alfabet. Du kan skrive alene eller bruke diagrammet nedenfor.
Med disse dataene kan vi danne matriser for hvert nummer i vårt pythonprogram som vist nedenfor.
null = null = en = to = tre = fire = fem = seks = sju = åtte = ni =
Hvis du følger programmet vil det være en funksjon for å vise hvert tegn til vår 7-segment display men lar hoppe over dette for nå og komme inn i mens uendelig loop. Hvor les nåværende tid fra Raspberry Pi og del verdien av tiden mellom fire variabler. For eksempel hvis tiden er 10.45, vil variabelen h1 ha 1, h2 vil ha 0, m1 vil ha 4vand m2 vil ha 5.
nå = datetime.datetime.now () time = nå. time minutt = nå. minutt h1 = time / 10 h2 = time% 10 m1 = minutt / 10 m2 = minutt% 10 utskrift (h1, h2, m1, m2)
Vi må vise disse fire variable verdiene på henholdsvis de fire sifrene. For å skrive en verdi av variabel til et siffer kan vi bruke følgende linjer. Her vises vi på siffer 1 ved å gjøre det høyt, deretter kalles funksjonen print_segment (variable) for å vise verdien i variabelen på segmentdisplayet. Du lurer kanskje på hvorfor vi har en forsinkelse etter det, og hvorfor vi slår av dette tallet etter dette.
GPIO.utgang (7, 1) #Slå på siffer ett utskriftssegment (h1) #Skriv ut h1 på segmenttid. Sov (forsinkelsestid) GPIO.utgang (7, 0) #Slå av siffer ett
Årsaken er, som vi vet, kan vi bare vise ett siffer om gangen, men vi har fire sifre som skal vises, og bare hvis alle de fire sifrene vises, vil det komplette firesifrede nummeret være synlig for brukeren.
Så hvordan viser alle 4 sifrene samtidig ?
Heldig for oss er MPU veldig raskere enn et menneskelig øye, så hva vi faktisk gjør: vi viser ett siffer om gangen, men vi gjør det veldig raskt som vist ovenfor.
Vi velger ett siffer for å vente på 2 ms (variabel forsinkelsestid) slik at MPU og 7-segmentet kan behandle det og deretter slå av sifferet og gå videre til neste siffer og gjøre det samme til vi når det siste sifferet. Denne forsinkelsen på 2 ms kan ikke observeres med et menneskelig øye, og alle de fire sifrene ser ut til å være PÅ samtidig.
Den siste tingen å lære det å vite hvordan funksjonen print_segment (variable) fungerer. Inne i denne funksjonen bruker vi matriser som vi har erklært så langt. Så uansett hvilken variabel vi sender til denne funksjonen, skal ha verdien mellom (0-9), vil variabeltegnet motta denne verdien og sammenligne den for reell verdi. Her sammenlignes variabelen med '1'. Tilsvarende sammenligner vi med alle tall fra 0 til 9. Hvis det er en kamp, bruker vi matriser og tilordner hver verdi til de respektive segmentpinnene som vist nedenfor.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Vis tid på 4-sifret 7-segment ved hjelp av Raspberry Pi:
Bruk skjemaet og koden som er gitt her for å opprette tilkoblinger og programmere bringebær-pien din deretter. Etter at alt er gjort, er det bare å starte programmet, og du bør finne den aktuelle tiden som vises i syv segmentdisplayet. Men det er få ting du må sjekke før dette
- Forsikre deg om at du har satt din Raspberry Pi med gjeldende tid, i tilfelle hvis den kjører på frakoblet tid.
- Strøm Raspberry pi med en adapter og ikke med den bærbare datamaskinen / datamaskinen fordi strømmen som trekkes av 7-segment skjermen er høy og USB-porten ikke kan skaffe den.
Hvis alt fungerer som forventet, bør du finne noe slikt nedenfor.
Komplett bearbeiding av denne bringebærklokken kan også sjekkes i videoen nedenfor. Håper du likte prosjektet og likte å bygge et. Gi meg beskjed om hva du synes eller om du trenger hjelp.