- 7-segment och 4-siffrig 7-segment displaymodul:
- Ansluter fyrsiffrig 7-segmentsmodul med Raspberry Pi:
- Programmering av din Raspberry Pi:
- Visa tid på fyrsiffrigt 7-segment med Raspberry Pi:
Vi vet alla att Raspberry Pi är en underbar utvecklingsplattform baserad på ARM-mikroprocessor. Med sin höga beräkningskraft kan den utföra underverk i händerna på elektronikhobbyister eller studenter. Allt detta kan endast vara möjligt om vi vet hur vi får det att interagera med den verkliga världen och analysera data via någon utdataenhet. Det finns många sensorer som kan upptäcka vissa parametrar från realtidsvärlden och överföra dem till en digital värld och vi analyserar dem genom att se dem antingen på en LCD-skärm eller någon annan skärm. Men det skulle alltid inte vara ekonomiskt att använda en LCD-skärm med PI för att visa liten mängd data. Det är här vi föredrar att använda 16x2 alfanumerisk LCD-skärm eller 7-segmentsdisplayen. Vi har redan lärt oss hur man använder en alfanumerisk LCD-skärm och en 7-segmentskärm med ett segment med Raspberry pi. Idag kommer viGränssnitt 4-siffrig Seven Segment Display-modul med Raspberry Pi och display Time over it.
Även om 16x2 alfanumerisk LCD är mycket bekvämare än 7-segmentsdisplay, finns det få scenarier där en 7-segmentsdisplay skulle komma bättre än en LCD-skärm. LCD lider av nackdelen med att ha låg karaktärsstorlek och kommer att vara överdriven för ditt projekt om du bara planerar att visa några numeriska värden. 7-segment har också fördelen mot dåligt ljusförhållande och kan ses från lagervinklar än en vanlig LCD-skärm. Så, låt oss börja veta det.
7-segment och 4-siffrig 7-segment displaymodul:
7 Segment Display har sju segment i sig och varje segment har en LED inuti för att visa siffrorna genom att lysa upp motsvarande segment. Som om du vill att 7-segmentet ska visa siffran "5" måste du lysa segment a, f, g, c och d genom att göra motsvarande stift höga. Det finns två typer av 7-segment skärmar: Common Cathode och Common Anode, här använder vi Common Cathode sju segment display. Läs mer om 7-segmentsvisning här.
Nu vet vi hur vi visar vår önskade numeriska karaktär på en enda 7-segmentskärm. Men det är ganska uppenbart att vi skulle behöva mer än en 7-segmentsdisplay för att förmedla all information som är mer än en siffra. Så i den här handledningen kommer vi att använda en fyrsiffrig 7-segment displaymodul som visas nedan.
Som vi kan se finns Four Seven Segment Displays kopplade ihop. Vi vet att varje 7-segmentsmodul kommer att ha 10 stift och för 4 sju segmentskärmar skulle det finnas totalt 40 stift och det skulle vara hektiskt för vem som helst att löda dem på ett prickbräda, så jag rekommenderar starkt någon att köpa en modul eller skapa ditt eget kretskort för att använda en fyrsiffrig 7-segmentsdisplay. Anslutningsschemat för detsamma visas nedan:
För att förstå hur fyrsiffrig sju segmentmodul fungerar måste vi titta på ovanstående scheman, som visas är A-stiften på alla fyra skärmarna anslutna för att samlas som en A och samma för B, C…. upp till DP. Så, i grund och botten om utlösare A är på, ska alla fyra A gå högt, eller hur?
Men det händer inte. Vi har ytterligare fyra stift från D0 till D3 (D0, D1, D2 och D3) som kan användas för att styra vilken bild av de fyra som ska gå högt. Till exempel: Om jag behöver att min utdata bara ska finnas på den andra skärmen, ska endast D1 göras högt medan andra stift (D0, D2 och D3) hålls så låga. Vi kan helt enkelt välja vilken skärm som ska gå aktivt med hjälp av stiften från D0 till D3 och vilket tecken som ska visas med stiften från A till DP.
Ansluter fyrsiffrig 7-segmentsmodul med Raspberry Pi:
Låt oss se hur, hur vi kan ansluta den fyrsiffriga 7-segmentmodulen med vår Raspberry Pi. 7-segmentsmodulen har 16 stift som visas nedan. Din modul kan ha mindre, men oroa dig inte, det kommer fortfarande att ha följande säkert
- 7 eller 8 segmentstift (här stift från 1 till 8)
- Jordstift (här stift 11)
- Fyrsiffriga stift (här stift 13 till 16)
Nedan visas schemat för hallon pi digital klocka genom att ansluta fyrsiffrig sju segment display modul med Raspberry Pi:
Följande tabell hjälper dig också att skapa anslutningar och verifiera att den är enligt schemat som visas ovan.
S. nr |
Rsp Pi GPIO-nummer |
Rsp Pi PIN-nummer |
7-segment namn |
7-segs pin-nummer (här i den här modulen) |
1 |
GPIO 26 |
PIN 37 |
Segment a |
1 |
2 |
GPIO 19 |
PIN-kod 35 |
Segment b |
2 |
3 |
GPIO 13 |
PIN-kod 33 |
Segment c |
3 |
4 |
GPIO 6 |
PIN 31 |
Segment d |
4 |
5 |
GPIO 5 |
PIN-kod 29 |
Segment e |
5 |
6 |
GPIO 11 |
PIN-kod 23 |
Segment f |
6 |
7 |
GPIO 9 |
PIN 21 |
Segment g |
7 |
8 |
GPIO 10 |
PIN 19 |
Segment DP |
8 |
9 |
GPIO 7 |
PIN 26 |
Siffra 1 |
13 |
10 |
GPIO 8 |
PIN-kod 24 |
Siffra 2 |
14 |
11 |
GPIO 25 |
PIN-kod 22 |
Siffra 3 |
15 |
12 |
GPIO 24 |
PIN 18 |
Siffra 4 |
16 |
13 |
Jord |
Jord |
Jord |
11 |
Identifiera stiften på din modul så är det bra att fortsätta med anslutningarna. Att upptäcka GPIO-stiften i Raspberry pi kan vara en lite utmanande uppgift så jag har gett dig den här bilden för GPIO Pins.
Programmering av din Raspberry Pi:
Här använder vi Python-programmeringsspråk för programmering av RPi. Det finns många sätt att programmera din Raspberry Pi. I denna handledning använder vi Python 3 IDE, eftersom den är den mest använda. Det fullständiga Python-programmet ges i slutet av denna handledning. Läs mer om program och kör kod i Raspberry Pi här.
Vi kommer att prata om några kommandon som vi ska använda i PYHTON-programmet för detta projekt, Först ska vi importera GPIO-filer från biblioteket, nedanstående funktion gör att vi kan programmera GPIO-stift av PI. Vi byter namn på "GPIO" till "IO", så i programmet när vi vill hänvisa till GPIO-stift kommer vi att använda ordet "IO". Vi har också importerat tid och datum för att läsa tidens värde från Rsp Pi.
importera RPi.GPIO som GPIO-importtid, datetime
Ibland, när GPIO-stiften, som vi försöker använda, kan göra några andra funktioner. I så fall får vi varningar när vi kör programmet. Kommandot nedan ber PI att ignorera varningarna och fortsätta med programmet.
IO.setwarnings (False)
Vi kan hänvisa GPIO-stift på PI, antingen med stiftnummer ombord eller med deras funktionsnummer. Precis som 'PIN 29' på tavlan är 'GPIO5'. Så vi säger här antingen att vi kommer att representera nålen här med '29' eller '5'. GPIO.BCM betyder att vi representerar att använda 5 för GPIO5-stift 29.
IO.setmode (GPIO.BCM)
Som alltid bör vi börja med att initialisera stiften, här är både segmentstiften och sifferstiften utgångsstift. För programmeringsändamål bildar vi matriser för segmentstift och initierar dem till '0' efter att ha förklarat dem som GPIO.OUT
segment8 = (26,19,13,6,5,11,9,10) för segment i segment8: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
På samma sätt för siffertapparna förklarar vi dem som utgångsstift och gör dem '0' som standard
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) # Off initialt #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) # Off initialt #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) # Off initialt #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) # Off initialt
Vi måste skapa matriser för att visa varje nummer på en sju segmentskärm. För att visa ett nummer måste vi kontrollera alla 7 segmentstift (exklusive punktstift), det vill säga de måste antingen stängas av eller sättas på. Till exempel för att visa nummer 5 har vi gjort följande arrangemang
S. nr |
Rsp Pi GPIO-nummer |
7-segment namn |
Status för att visa '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å samma sätt har vi sekvensnummer för alla siffror och alfabet. Du kan skriva på egen hand eller använda diagrammet nedan.
Med dessa data kan vi bilda arrayer för varje nummer i vårt pythonprogram som visas nedan.
null = noll = en = två = tre = fyra = fem = sex = sju = åtta = nio =
Om du följer programmet kommer det att finnas en funktion för att visa varje tecken till våra 7-segment display men kan hoppa över detta nu och komma in i under oändlig loop. Var läs den aktuella tiden från Raspberry Pi och dela upp tidsvärdet mellan fyra variabler. Om tiden till exempel är 10.45 kommer variabeln h1 att ha 1, h2 kommer att ha 0, m1 kommer att ha 4vand m2 kommer att ha 5.
nu = datetime.datetime.now () timme = nu. timme = nu. minut h1 = timme / 10 h2 = timme% 10 m1 = minut / 10 m2 = minut% 10 utskrift (h1, h2, m1, m2)
Vi måste visa dessa fyra variabla värden på våra fyra siffror. För att skriva ett värde av variabel till en siffra kan vi använda följande rader. Här visas vi på siffra 1 genom att få den att gå högt så kommer funktionen print_segment (variabel) att kallas för att visa värdet i variabeln på segmentdisplayen. Du kanske undrar varför vi har en försening efter det och varför vi stänger av denna siffra efter detta.
GPIO.output (7, 1) #Turn on Digit One print_segment (h1) #Print h1 on segment time. Sleep (delay_time) GPIO.output (7, 0) #Stäng av siffra ett
Anledningen är att som vi vet kan vi bara visa en siffra åt gången, men vi har fyra siffror som ska visas och bara om alla fyra siffror visas kommer hela fyrsiffriga numret att visas för användaren.
Så hur visar alla 4 siffror samtidigt ?
Tur för oss att vår MPU är väldigt mycket snabbare än ett mänskligt öga, så vad vi faktiskt gör: vi visar en siffra i taget men vi gör det väldigt snabbt som visas ovan.
Vi väljer en siffra för att vänta i 2 ms (variabel fördröjningstid) så att MPU och 7-segmentet kan bearbeta det och sedan stänga av den siffran och gå vidare till nästa siffra och göra detsamma tills vi når den sista siffran. Denna fördröjning på 2 ms kan inte observeras av ett mänskligt öga och alla fyra siffrorna verkar vara PÅ samtidigt.
Det sista att lära sig att veta hur funktionen print_segment (variabel) fungerar. Inuti denna funktion använder vi de matriser som vi hittills har deklarerat. Så oavsett vilken variabel som vi skickar till den här funktionen bör ha värdet mellan (0-9), kommer variabeltecknet att ta emot detta värde och jämföra det för verkligt värde. Här jämförs variabeln med '1'. På samma sätt jämför vi med alla siffror från 0 till 9. Om det är en matchning använder vi matriserna och tilldelar varje värde till sina respektive segmentstift som visas nedan.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Visa tid på fyrsiffrigt 7-segment med Raspberry Pi:
Använd schemat och koden som ges här för att skapa anslutningar och programmera din hallon pi därefter. När allt är klart startar du bara programmet och du bör hitta den aktuella tiden som visas i sju segmentdisplayen. Men det är få saker du måste kontrollera innan det här
- Se till att du har ställt in din Raspberry Pi med aktuell tid för alla fall om den körs offline tid.
- Ström din Raspberry pi med en adapter och inte med din bärbara dator / dator eftersom strömmen som dras av 7-segmentsdisplayen är hög och din USB-port inte kan skaffa den.
Om allt fungerar som förväntat bör du hitta något liknande här nedan.
Den fullständiga funktionen av denna hallon-pi-klocka kan också kontrolleras i videon nedan. Hoppas att du gillade projektet och gillade att bygga ett. Låt mig veta vad du tycker eller om du behöver hjälp.