- 7-segmenten en 4-cijferige 7-segmenten displaymodule:
- 4-cijferige 7-segmentmodule met Raspberry Pi verbinden:
- Programmering van uw Raspberry Pi:
- Weergavetijd op 4-cijferig 7-segment met Raspberry Pi:
We weten allemaal dat Raspberry Pi is een prachtig ontwikkelingsplatform op basis van ARM-microprocessor. Met zijn hoge rekenkracht kan hij wonderen verrichten in handen van elektronicahobbyisten of studenten. Dit alles is alleen mogelijk als we weten hoe we het kunnen laten communiceren met de echte wereld en de gegevens kunnen analyseren via een uitvoerapparaat. Er zijn veel sensoren die bepaalde parameters uit de real-time wereld kunnen detecteren en overbrengen naar een digitale wereld en we analyseren ze door ze op een LCD-scherm of een ander scherm te bekijken. Maar het zou altijd niet economisch zijn om een LCD-scherm met PI te gebruiken voor het weergeven van kleine hoeveelheden gegevens. Dit is waar we de voorkeur geven aan het 16x2 alfanumerieke LCD-scherm of het 7-segment display. We hebben al geleerd hoe we een alfanumeriek LCD-scherm en een enkelvoudig 7-segmentendisplay met Raspberry pi moeten gebruiken. Vandaag zullen weInterface 4-cijferige zeven-segment displaymodule met Raspberry Pi en weergave van de tijd eroverheen.
Hoewel een 16x2 alfanumeriek LCD-scherm veel comfortabeler is dan een 7-segment display, zijn er maar weinig scenario's waarin een 7-segment display handiger zou zijn dan een LCD-display. LCD heeft het nadeel dat het een lage tekengrootte heeft en zal overdreven zijn voor uw project als u alleen van plan bent om enkele numerieke waarden weer te geven. 7-segmenten hebben ook het voordeel bij slechte lichtomstandigheden en kunnen vanuit grotere hoeken worden bekeken dan een normaal LCD-scherm. Dus laten we het beginnen te weten.
7-segmenten en 4-cijferige 7-segmenten displaymodule:
7 Segment Display heeft zeven segmenten en elk segment heeft een LED erin om de cijfers weer te geven door de overeenkomstige segmenten op te lichten. Als je wilt dat het 7-segment het nummer "5" weergeeft, dan moet je segment a, f, g, c en d oplichten door hun corresponderende pinnen hoog te maken. Er zijn twee soorten 7-segment displays: Common Cathode en Common Anode, hier gebruiken we Common Cathode zeven segmenten display. Lees hier meer over 7-segmentweergave.
Nu weten we hoe we ons gewenste numerieke teken op een enkel 7-segment display kunnen weergeven. Maar het is vrij duidelijk dat we meer dan één 7-segmentendisplay nodig hebben om informatie over te brengen die uit meer dan één cijfer bestaat. In deze tutorial zullen we dus een 4-cijferige 7-segment displaymodule gebruiken, zoals hieronder getoond.
Zoals we kunnen zien, zijn er vier displays met zeven segmenten die met elkaar zijn verbonden. We weten dat elke 7-segmentmodule 10 pinnen zal hebben en voor 4 displays met zeven segmenten zouden er in totaal 40 pinnen zijn en het zou hectisch zijn voor iedereen om ze op een puntbord te solderen, dus ik zou iedereen ten zeerste aanbevelen om een module te kopen of maak je eigen printplaat voor het gebruik van een 4-cijferig 7-segment display. Het aansluitschema voor hetzelfde wordt hieronder getoond:
Om te begrijpen hoe de 4-cijferige module met zeven segmenten werkt, moeten we het bovenstaande schema bekijken, zoals getoond, de A-pinnen van alle vier het display zijn verbonden om te verzamelen als één A en hetzelfde voor B, C…. t / m DP. Dus als trigger A aan staat, moeten alle vier A's hoog gaan, toch?
Maar dat gebeurt niet. We hebben vier extra pinnen van D0 tot D3 (D0, D1, D2 en D3) die kunnen worden gebruikt om te bepalen welke weergave van de vier hoog moet worden. Bijvoorbeeld: als ik wil dat mijn uitvoer alleen op het tweede scherm aanwezig is, moet alleen D1 hoog worden gemaakt terwijl andere pinnen (D0, D2 en D3) zo laag blijven. We kunnen eenvoudig selecteren welk display actief moet worden met behulp van de pinnen van D0 tot D3 en welk teken moet worden weergegeven met behulp van de pinnen van A tot DP.
4-cijferige 7-segmentmodule met Raspberry Pi verbinden:
Laten we eens kijken hoe we deze 4-cijferige 7-segmentmodule kunnen verbinden met onze Raspberry Pi. De 7-segmentmodule heeft 16 pinnen, zoals hieronder weergegeven. Je module heeft misschien minder, maar maak je geen zorgen, het zal zeker nog steeds het volgende hebben
- 7 of 8 segmentpinnen (hier pinnen beginnend van 1 tot 8)
- Aardpen (hier pen 11)
- 4 cijferpinnen (hier pinnen 13 tot 16)
Hieronder vindt u het schema voor de Raspberry Pi digitale klok door de 4-cijferige weergavemodule met zeven segmenten te verbinden met de Raspberry Pi:
De volgende tabel helpt u ook bij het maken van de verbindingen en het controleren of deze volgens het bovenstaande schema zijn.
S.No |
Rsp Pi GPIO-nummer |
Rsp Pi pincode |
7-segmentnaam |
7-Seg-pincode (hier in deze module) |
1 |
GPIO 26 |
SPELD 37 |
Segment a |
1 |
2 |
GPIO 19 |
SPELD 35 |
Segment b |
2 |
3 |
GPIO 13 |
SPELD 33 |
Segment c |
3 |
4 |
GPIO 6 |
SPELD 31 |
Segment d |
4 |
5 |
GPIO 5 |
SPELD 29 |
Segment e |
5 |
6 |
GPIO 11 |
PIN 23 |
Segment f |
6 |
7 |
GPIO 9 |
PIN 21 |
Segment g |
7 |
8 |
GPIO 10 |
SPELD 19 |
Segment DP |
8 |
9 |
GPIO 7 |
SPELD 26 |
Cijfer 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
Cijfer 2 |
14 |
11 |
GPIO 25 |
SPELD 22 |
Cijfer 3 |
15 |
12 |
GPIO 24 |
SPELD 18 |
Cijfer 4 |
16 |
13 |
Grond |
Grond |
Grond |
11 |
Identificeer de pinnen op uw module en u bent klaar om verder te gaan met de verbindingen. Het vinden van de GPIO-pinnen in Raspberry pi kan een beetje uitdagende taak zijn, dus ik heb je deze afbeelding voor GPIO-pinnen gegeven.
Programmering van uw Raspberry Pi:
Hier gebruiken we Python-programmeertaal voor het programmeren van RPi. Er zijn veel manieren om uw Raspberry Pi te programmeren. In deze tutorial gebruiken we de Python 3 IDE, aangezien dit de meest gebruikte is. Het volledige Python-programma wordt aan het einde van deze tutorial gegeven. Lees hier meer over Programmeer en voer code in Raspberry Pi uit.
We zullen het hebben over enkele commando's die we gaan gebruiken in het PYHTON-programma voor dit project, Eerst gaan we het GPIO-bestand uit de bibliotheek importeren, met onderstaande functie kunnen we GPIO-pinnen van PI programmeren. We hernoemen ook "GPIO" naar "IO", dus in het programma zullen we telkens wanneer we naar GPIO-pinnen willen verwijzen het woord 'IO' gebruiken. We hebben ook tijd en datetime geïmporteerd om de waarde van tijd uit Rsp Pi te lezen.
importeer RPi.GPIO als GPIO-importtijd, datetime
Soms, wanneer de GPIO-pinnen, die we proberen te gebruiken, andere functies uitvoeren. In dat geval zullen we waarschuwingen ontvangen tijdens het uitvoeren van het programma. Onderstaand commando vertelt de PI om de waarschuwingen te negeren en door te gaan met het programma.
IO.setwarnings (False)
We kunnen de GPIO-pinnen van PI verwijzen, hetzij op pincode aan boord, hetzij op functienummer. Net als 'PIN 29' op het bord is 'GPIO5'. Dus we vertellen hier dat we de pin hier met '29' of '5' gaan weergeven. GPIO.BCM betekent dat we 5 gebruiken voor GPIO5 pin 29.
IO.setmode (GPIO.BCM)
Zoals altijd moeten we beginnen met het initialiseren van de pinnen, hier zijn zowel de segmentpinnen als de cijferpinnen outputpinnen. Voor programmeerdoeleinden vormen we arrays voor segmentpennen en initialiseren we ze op '0' nadat we ze als GPIO hebben gedeclareerd.
segment8 = (26,19,13,6,5,11,9,10) voor segment in segment8: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
Op dezelfde manier declareren we voor de cijferpinnen ze als uitvoerpinnen en maken we ze standaard '0'
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) #Off aanvankelijk #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) #Off aanvankelijk #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) #Off aanvankelijk #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) #Off aanvankelijk
We moeten arrays vormen om elk nummer weer te geven op een display met zeven segmenten. Om één nummer weer te geven, moeten we alle 7 segmentpennen bedienen (exclusief puntpen), dat wil zeggen dat ze ofwel moeten worden uitgeschakeld of ingeschakeld. Om bijvoorbeeld het cijfer 5 weer te geven, hebben we de volgende regeling getroffen
S.No |
Rsp Pi GPIO-nummer |
7-segmentnaam |
Status om '5' weer te geven. (0-> UIT, 1-> AAN) |
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 |
Evenzo hebben we een volgnummer voor alle cijfers en alfabetten. U kunt zelf schrijven of de onderstaande tabel gebruiken.
Met deze gegevens kunnen we de arrays voor elk nummer in ons python-programma vormen, zoals hieronder wordt weergegeven.
null = nul = een = twee = drie = vier = vijf = zes = zeven = acht = negen =
Als je het programma volgt, zal er een functie zijn om elk karakter weer te geven op ons 7-segment display, maar laten we dit voorlopig overslaan en in de while oneindige lus komen. Waar lees de huidige tijd van Raspberry Pi en verdeel de waarde van tijd over vier variabelen. Als de tijd bijvoorbeeld 10.45 is, heeft de variabele h1 1, h2 0, m1 4v en m2 5.
now = datetime.datetime.now () uur = nu.uur minuut = nu.minuut h1 = uur / 10 h2 = uur% 10 m1 = minuut / 10 m2 = minuut% 10 print (h1, h2, m1, m2)
We moeten deze vier variabele waarden respectievelijk op onze vier cijfers weergeven. Om een waarde van een variabele naar een cijfer te schrijven, kunnen we de volgende regels gebruiken. Hier worden we weergegeven op cijfer 1 door het hoog te laten gaan, waarna de functie print_segment (variabele) wordt aangeroepen om de waarde in variabele weer te geven op het segmentdisplay. Je vraagt je misschien af waarom we daarna een vertraging hebben en waarom we dit cijfer hierna uitschakelen.
GPIO.output (7, 1) #Schakel cijfer één in print_segment (h1) #Print h1 op segment time.sleep (delay_time) GPIO.output (7, 0) #Cijfer één uitschakelen
De reden is, zoals we weten, dat we slechts één cijfer tegelijk kunnen weergeven, maar we hebben vier cijfers die moeten worden weergegeven en alleen als alle vier cijfers worden weergegeven, is het volledige viercijferige nummer zichtbaar voor de gebruiker.
Dus, hoe kunnen alle 4 de cijfers tegelijkertijd worden weergegeven ?
Gelukkig voor ons is onze MPU veel sneller dan een menselijk oog, dus wat we eigenlijk doen: we geven één cijfer tegelijk weer, maar we doen het erg snel zoals hierboven weergegeven.
We selecteren een cijferweergave, het wacht 2ms (variabele delay_time) zodat de MPU en het 7-segment het kunnen verwerken en schakelen dan dat cijfer uit en gaan verder met het volgende cijfer en doen hetzelfde tot we het laatste cijfer bereiken. Deze vertraging van 2 ms kan niet door het menselijk oog worden waargenomen en alle vier cijfers lijken tegelijkertijd AAN te zijn.
Het laatste dat je moet leren, is hoe de functie print_segment (variabele) werkt. Binnen deze functie gebruiken we de arrays die we tot nu toe hebben gedeclareerd. Dus welke variabele we ook naar deze functie sturen, moet de waarde tussen (0-9) hebben, het variabele-teken ontvangt deze waarde en vergelijkt deze voor de echte waarde. Hier wordt de variabele vergeleken met '1'. Op dezelfde manier vergelijken we met alle getallen van 0 tot 9. Als het een overeenkomst is, gebruiken we de arrays en wijzen we elke waarde toe aan de respectievelijke segmentpennen, zoals hieronder weergegeven.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Weergavetijd op 4-cijferig 7-segment met Raspberry Pi:
Gebruik het schema en de code die hier worden gegeven om de verbindingen tot stand te brengen en programmeer uw Raspberry Pi dienovereenkomstig. Nadat alles is voltooid, start u het programma en vindt u de huidige tijd die wordt weergegeven in het display met zeven segmenten. Maar er zijn een paar dingen die u eerst moet controleren
- Zorg ervoor dat u uw Raspberry Pi met de huidige tijd hebt ingesteld, voor het geval dat deze op offline tijd draait.
- Voorzie uw Raspberry pi van stroom met een adapter en niet met uw laptop / computer, want de hoeveelheid stroom die wordt afgenomen door het 7-segment display is hoog en uw USB-poort kan er geen bron van vinden.
Als alles werkt zoals verwacht, zou u zoiets hieronder moeten vinden.
De volledige werking van deze frambozen pi-klok kan ook worden gecontroleerd op de onderstaande video. Ik hoop dat je het project leuk vond en het leuk vond om er een te bouwen. Laat me weten wat je ervan vindt of dat je hulp nodig hebt.