Raspberry Pi is een op ARM-architectuur gebaseerde processor, ontworpen voor elektronische ingenieurs en hobbyisten. De PI is momenteel een van de meest vertrouwde platformen voor projectontwikkeling. Met een hogere processorsnelheid en 1 GB RAM kan de PI worden gebruikt voor veel spraakmakende projecten zoals beeldverwerking en IoT.
Voor het doen van spraakmakende projecten moet men de basisfuncties van PI begrijpen. In deze tutorials behandelen we alle basisfunctionaliteiten van Raspberry Pi. In elke tutorial bespreken we een van de functies van PI. Aan het einde van deze Raspberry Pi Tutorials-serie kun je Raspberry Pi leren en zelf goede projecten maken. Doorloop onderstaande tutorials:
- Aan de slag met Raspberry Pi
- Raspberry Pi-configuratie
- LED Blinky
- Knoopinterface
- Raspberry Pi PWM-generatie
- LCD-interface met Raspberry Pi
- Besturen van DC-motor
- Stappenmotorbesturing
- Interfacing Shift Register
- Raspberry Pi ADC-zelfstudie
- Servomotorbesturing
- Capacitief touchpad
In deze tutorial gaan we Raspberry Pi 7-segment display interfacing doen. Zeven segmentdisplays zijn de goedkoopste voor een display-eenheid. Een paar van deze op elkaar gestapelde segmenten kunnen worden gebruikt om de temperatuur, de tellerwaarde enz. Weer te geven. We zullen de 7-segment display-eenheid verbinden met GPIO van PI en ze bedienen om de cijfers dienovereenkomstig weer te geven. Daarna zullen we een programma in PYTHON schrijven voor weergave van zeven segmenten om te tellen van 0-9 en zichzelf terug te stellen op nul.
Zeven segmenten display:
Er zijn verschillende soorten en maten van 7 Segment Displays. We hebben Seven Segment hier in detail behandeld. In principe zijn er twee soorten 7-segmenten: Common Anode-type (Common Positive of Common VCC) en Common Cathode-type (Common Negative of Common Ground).
Gemeenschappelijke anode (CA): hierin zijn alle negatieve aansluitingen (kathode) van alle 8 LED's met elkaar verbonden (zie onderstaande afbeelding), genaamd COM. En alle positieve terminals worden met rust gelaten.
Gemeenschappelijke kathode (CC): hierin zijn alle positieve aansluitingen (anodes) van alle 8 LED's met elkaar verbonden, genaamd COM. En alle negatieve thermiek wordt met rust gelaten.
Deze CC- en CA-displays met zeven segmenten zijn erg handig bij het multiplexen van meerdere cellen. In onze tutorial zullen we CC of Common Cathode Seven Segment Display gebruiken.
We hebben al 7 segmenten gekoppeld met 8051, met Arduino en met AVR. We hebben ook in veel van onze projecten een 7-segmentdisplay gebruikt.
We zullen een beetje over Raspberry Pi GPIO praten voordat we verder gaan, Er zijn 40 GPIO-uitgangspennen in Raspberry Pi 2. Maar van de 40 kunnen slechts 26 GPIO-pinnen (GPIO2 tot GPIO27) worden geprogrammeerd, zie onderstaande afbeelding. Sommige van deze pinnen hebben een aantal speciale functies. Met speciale GPIO opzij gezet, hebben we 17 GPIO over.
Het GPIO's (pin 1 of 17) + 3.3V signaal is voldoende om het 7 Segment Display aan te sturen. Om de stroomlimiet te bieden, gebruiken we 1KΩ-weerstand voor elk segment, zoals weergegeven in het schakelschema.
Ga voor meer informatie over GPIO-pinnen en hun stroomuitgangen door: LED knippert met Raspberry Pi
Vereiste componenten:
Hier gebruiken we Raspberry Pi 2 Model B met Raspbian Jessie OS. Alle basisvereisten voor hardware en software zijn eerder besproken, u kunt het opzoeken in de Raspberry Pi-introductie, behalve dat we nodig hebben:
- Verbindende pinnen
- Common Cathode-display met 7 segmenten (LT543)
- 1KΩ weerstand (8 stuks)
- Breadboard
Circuit en werkuitleg:
De verbindingen die zijn gemaakt voor Interfacing 7-segment display naar Raspberry Pi, worden hieronder gegeven. We hebben hier Common Cathode 7 Segment gebruikt:
PIN1 of e ------------------ GPIO21
PIN2 of d ------------------ GPIO20
PIN4 of c ------------------ GPIO16
PIN5 of h of DP ---------- GPIO 12 // niet verplicht omdat we geen decimale punt gebruiken
PIN6 of b ------------------ GPIO6
PIN7 of een ------------------ GPIO13
PIN9 of f ------------------ GPIO19
PIN10 of g ---------------- GPIO26
PIN3 of PIN8 ------------- verbonden met aarde
We zullen dus 8 GPIO-pinnen van PI gebruiken als een 8-bits POORT. Hierin is GPIO13 LSB (Least Significant Bit) en GPIO 12 is MSB (Most Significant Bit).
Nu, als we willen nummer “1” weer te geven, moeten we aan de macht segmenten B en C. Om segment B en C van stroom te voorzien, hebben we GPIO6 en GPIO16 nodig. Dus de byte voor de functie 'PORT' is 0b00000110 en de hexadecimale waarde van 'PORT' is 0x06. Met beide pinnen hoog krijgen we “1” te zien.
We hebben de waarden geschreven voor elk cijfer dat moet worden weergegeven en deze waarden opgeslagen in een reeks tekens met de naam 'DISPLAY' (controleer het gedeelte Code hieronder). Vervolgens hebben we die waarden een voor een opgeroepen om het corresponderende cijfer op het display te laten zien, met behulp van de functie 'PORT'.
Programmering Toelichting:
Zodra alles is aangesloten volgens het schakelschema, kunnen we de PI inschakelen om het programma in PYHTON te schrijven.
We zullen het hebben over enkele commando's die we gaan gebruiken in het PYHTON-programma, We gaan 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.
importeer RPi.GPIO als IO
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.
IO.setmode (IO.BCM)
We stellen 8 GPIO-pinnen in als uitvoerpinnen, voor gegevens- en besturingspinnen van het LCD-scherm.
IO.setup (13, IO.OUT) IO.setup (6, IO.OUT) IO.setup (16, IO.OUT) IO.setup (20, IO.OUT) IO.setup (21, IO.OUT) IO.setup (19, IO.OUT) IO.setup (26, IO.OUT) IO.setup (12, IO.OUT)
Als de voorwaarde tussen de accolades waar is, worden de instructies in de lus één keer uitgevoerd. Dus als bit0 van 8bit 'pin' waar is, zal PIN13 HOOG zijn, anders is PIN13 LAAG. We hebben acht 'if else'-voorwaarden voor bit0 tot bit7, zodat de juiste LED, in het 7-segment-display, hoog of laag kan worden gemaakt om het overeenkomstige nummer weer te geven.
if (pin & 0x01 == 0x01): IO.output (13,1) else: IO.output (13,0)
Dit commando voert de lus 10 keer uit, waarbij x wordt verhoogd van 0 tot 9.
voor x in bereik (10):
Het onderstaande commando wordt gebruikt als forever loop, met dit commando worden de statements in deze loop continu uitgevoerd.
Terwijl 1:
Alle andere functies en commando's zijn uitgelegd in het onderstaande gedeelte 'Code' met behulp van 'Opmerkingen'.
Na het schrijven van het programma en het uitvoeren ervan, triggert de Raspberry Pi de bijbehorende GPIO's om het cijfer op 7 Segment Display weer te geven. Het programma is zo geschreven dat het display continu van 0-9 telt.