- 7-segmentový a 4-miestny 7-segmentový zobrazovací modul:
- Pripojenie 4-ciferného 7-segmentového modulu s Raspberry Pi:
- Programovanie vášho Raspberry Pi:
- Čas zobrazenia na 4-cifernom 7-segmentovom disku pomocou Raspberry Pi:
Všetci vieme, že Raspberry Pi je úžasná vývojová platforma založená na mikroprocesore ARM. Vďaka svojej vysokej výpočtovej sile dokáže zázraky v rukách nadšencov alebo študentov elektroniky. To všetko je možné len v prípade, že vieme, ako ho prinútiť komunikovať s reálnym svetom a analyzovať údaje pomocou nejakého výstupného zariadenia. Existuje veľa senzorov, ktoré dokážu detekovať určité parametre zo sveta reálneho času a preniesť ich do digitálneho sveta a my ich analyzujeme a sledujeme ich buď na obrazovke LCD, alebo na inom displeji. Používanie LCD obrazovky s PI na zobrazovanie malého množstva údajov by však vždy nebolo ekonomické. To je miesto, kde preferujeme použitie 16x2 alfanumerického LCD displeja alebo 7-segmentového displeja. Už sme sa naučili, ako používať alfanumerický LCD a jednosegmentový 7-segmentový displej s Raspberry pi. Dnes budemeRozhranie 4-miestny sedemsegmentový zobrazovací modul s Raspberry Pi a zobrazenie času nad ním.
Aj keď je 16x2 alfanumerický LCD displej oveľa pohodlnejší ako 7-segmentový displej, existuje niekoľko scenárov, keď by 7-segmentový displej prišiel vhodnejšie ako LCD displej. Displej LCD trpí nedostatkom malej veľkosti znakov, a preto bude pre váš projekt nadmerný, ak plánujete zobraziť iba číselné hodnoty. Sedemsegmentové majú tiež výhodu oproti zlým svetelným podmienkam a dajú sa sledovať z nižších uhlov pohľadu ako na bežnú obrazovku LCD. Začnime to teda vedieť.
7-segmentový a 4-miestny 7-segmentový zobrazovací modul:
7 Segmentový displej má v sebe sedem segmentov a každý segment má v sebe jednu LED, ktorá zobrazuje čísla rozsvietením príslušných segmentov. Ak chcete, aby sa v 7-segmentovom segmente zobrazilo číslo „5“, musíte segmenty a, f, g, c a d rozžiariť tak, že zodpovedajúce kolíky nastavíte vysoko. Existujú dva typy 7-segmentových displejov: Common Cathode a Common Anode, tu používame sedemsegmentový displej Common Cathode. Viac informácií o 7 segmentovom displeji nájdete tu.
Teraz vieme, ako zobraziť požadovaný číselný znak na jednom 7-segmentovom displeji. Je ale celkom zrejmé, že na prenos akýchkoľvek informácií, ktoré majú viac ako jednu číslicu, by sme potrebovali viac ako jeden 7-segmentový displej. V tomto výučbe teda budeme používať 4-miestny 7-segmentový zobrazovací modul, ako je uvedené nižšie.
Ako vidíme, sú tu spojené štyri sedemsegmentové displeje. Vieme, že každý 7-segmentový modul bude mať 10 pinov a pre 4 sedemsegmentové displeje by ich bolo celkovo 40 a bolo by hektické, aby ich ktokoľvek spájkoval na bodovej doske, takže každému vrelo odporúčam kúpiť si modul alebo si vyrobte vlastnú DPS na použitie 4-miestneho 7-segmentového displeja. Schéma rovnakého pripojenia je uvedená nižšie:
Aby sme pochopili, ako štvormiestny sedemsegmentový modul funguje, musíme sa pozrieť na vyššie uvedené schémy, ako je znázornené, že kolíky A všetkých štyroch displejov sú spojené, aby sa zhromaždili ako jeden A a rovnaký pre B, C…. až DP. Takže v podstate, ak je spúšťač A zapnutý, potom by všetky štyri A mali ísť vysoko, nie?
Ale to sa nedeje. Máme ďalšie štyri piny od D0 do D3 (D0, D1, D2 a D3), pomocou ktorých môžeme ovládať, ktorý zo štyroch by mal ísť vysoko. Napríklad: Ak potrebujem, aby bol môj výstup prítomný iba na druhom displeji, potom by mala byť vysoká iba D1, zatiaľ čo ostatné piny (D0, D2 a D3) by mali byť nízke. Jednoducho si môžeme zvoliť, ktorý displej musí byť aktívny pomocou pinov od D0 do D3 a aký znak sa má zobraziť pomocou pinov od A do DP.
Pripojenie 4-ciferného 7-segmentového modulu s Raspberry Pi:
Pozrime sa, ako môžeme tento 4-miestny 7-segmentový modul prepojiť s naším Raspberry Pi. Sedemsegmentový modul má 16 pinov, ako je znázornené nižšie. Váš modul môže mať menej, ale nebojte sa, pre istotu bude mať aj naďalej nasledujúce
- 7 alebo 8 segmentových kolíkov (tu kolíky začínajúce od 1 do 8)
- Uzemňovací kolík (tu kolík 11)
- 4-ciferné piny (tu piny 13 až 16)
Ďalej je uvedená schéma digitálnych hodín Raspberry Pi pripojením štvormiestneho sedemstupňového zobrazovacieho modulu k Raspberry Pi:
Nasledujúca tabuľka vám tiež pomôže pri vytváraní pripojení a pri overovaní ich správnosti podľa vyššie uvedených schém.
S.No |
Číslo RSP Pi GPIO |
Rsp Pi PIN číslo |
Názov 7-segmentu |
7-kolíkové číslo kolíka (tu v tomto module) |
1 |
GPIO 26 |
PIN 37 |
Segment a |
1 |
2 |
GPIO 19 |
PIN 35 |
Segment b |
2 |
3 |
GPIO 13 |
PIN 33 |
Segment c |
3 |
4 |
GPIO 6 |
PIN 31 |
Segment d |
4 |
5 |
GPIO 5 |
PIN 29 |
Segment e |
5 |
6 |
GPIO 11 |
PIN 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 |
Číslica 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
2. číslica |
14 |
11 |
GPIO 25 |
PIN 22 |
3. číslica |
15 |
12 |
GPIO 24 |
PIN 18 |
4. číslica |
16 |
13 |
Uzemnenie |
Uzemnenie |
Uzemnenie |
11 |
Identifikujte kolíky na vašom module a môžete pokračovať v pripojeniach. Zistenie pinov GPIO v Raspberry pi môže byť trochu náročná úloha, preto som vám poskytol tento obrázok pre GPIO Pins.
Programovanie vášho Raspberry Pi:
Tu používame programovací jazyk Python na programovanie RPi. Existuje mnoho spôsobov, ako programovať svoje Raspberry Pi. V tomto tutoriále používame prostredie Python 3 IDE, pretože je to najpoužívanejšie. Kompletný program Python je uvedený na konci tohto návodu. Viac informácií o programovaní a spúšťaní kódu v Raspberry Pi sa dozviete tu.
Povieme si o niekoľkých príkazoch, ktoré použijeme v programe PYHTON pre tento projekt, Najskôr importujeme súbor GPIO z knižnice, funkcia nižšie nám umožňuje programovať GPIO piny PI. Premenujeme „GPIO“ na „IO“, takže v programe budeme vždy, keď budeme chcieť odkazovať na piny GPIO, použiť slovo „IO“. Importovali sme tiež čas a dátum a čas na načítanie hodnoty času z Rsp Pi.
import RPi.GPIO ako čas importu GPIO, dátum a čas
Niekedy, keď piny GPIO, ktoré sa snažíme používať, môžu robiť nejaké ďalšie funkcie. V takom prípade dostaneme varovania počas vykonávania programu. Príkaz dole povie PI, aby ignoroval varovania a pokračoval v programe.
IO.setwarnings (False)
Môžeme označiť GPIO piny PI, buď číslom kolíka na doske, alebo počtom ich funkcií. Rovnako ako „PIN 29“ na doske je „GPIO5“. Takže tu hovoríme, že tu budeme špendlík reprezentovať číslom „29“ alebo „5“. GPIO.BCM znamená, že budeme reprezentovať použitie 5 pre GPIO5 pin 29.
IO.setmode (GPIO.BCM)
Ako vždy by sme mali začať inicializáciou pinov, tu sú segmentovými aj digitálnymi pinmi výstupné piny. Pre programovacie účely formujeme polia pre segmentové piny a po ich vyhlásení za GPIO ich inicializujeme na „0“.
segment8 = (26,19,13,6,5,11,9,10) pre segment v segmente8: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
Podobne pre číslicové kolíky ich deklarujeme ako výstupné a štandardne ich nastavíme na „0“
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) #Off spočiatku #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) #Off spočiatku #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) #Off spočiatku #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) #Off spočiatku
Musíme zostaviť polia, aby sme každé číslo zobrazili na sedemsegmentovom displeji. Aby sme zobrazili jedno číslo, musíme ovládať všetkých 7 segmentových pinov (okrem bodkových pinov), to znamená, že musia byť buď vypnuté, alebo zapnuté. Napríklad na zobrazenie čísla 5 sme vykonali nasledujúce usporiadanie
S.No |
Číslo RSP Pi GPIO |
Názov 7-segmentu |
Stav na zobrazenie „5“. (0-> VYPNUTÉ, 1-> ZAPNUTÉ) |
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 |
Podobne máme poradové číslo pre všetky čísla a abecedy. Môžete písať sami alebo použiť nižšie uvedenú tabuľku.
S týmito údajmi môžeme zostaviť polia pre každé číslo v našom pythonovom programe, ako je uvedené nižšie.
null = nula = jeden = dva = tri = štyri = päť = šesť = sedem = osem = deväť =
Ak sa budete riadiť program bude funkcia, ktorá umožňuje zobrazenie každého znaku našej 7-segmentový displej, ale umožňuje preskočiť pre túto chvíľu a dostať sa do while nekonečnej slučke. Kde prečítať súčasný čas z Raspberry Pi a rozdeliť hodnotu času medzi štyri premenné. Napríklad ak je čas 10,45, potom bude mať premenná h1 hodnotu 1, h2 bude mať hodnotu 0, m1 bude mať 4 a m2 bude mať 5.
now = datetime.datetime.now () hour = now.hour minute = now.minute h1 = hour / 10 h2 = hour% 10 m1 = minute / 10 m2 = minute% 10 print (h1, h2, m1, m2)
Tieto štyri premenné hodnoty musíme zobraziť na našich štyroch čísliciach. Na zápis hodnoty premennej na číslicu môžeme použiť nasledujúce riadky. Tu zobrazujeme číslicu 1 tak, že ju zvýšime, potom sa zavolá funkcia print_segment (premenná), ktorá zobrazí hodnotu v premennej na segmentovom displeji. Možno by vás zaujímalo, prečo potom máme oneskorenie a prečo potom vypíname túto číslicu.
GPIO.output (7, 1) # Zapnúť číslicu jedna print_segment (h1) # Vytlačiť h1 na čas segmentu. Spánok (delay_time) GPIO.output (7, 0) # Vypnúť číslicu jedna
Dôvod je ten, že vieme, že môžeme zobraziť iba jednu číslicu naraz, ale máme k dispozícii štyri číslice, ktoré sa majú zobraziť, a iba ak sa zobrazia všetky štyri číslice, bude používateľovi viditeľné celé štvormiestne číslo.
Ako teda zobraziť všetky 4 číslice súčasne ?
Našťastie pre nás je naša MPU oveľa rýchlejšia ako ľudské oko, takže to, čo skutočne robíme: zobrazujeme jednu číslicu po druhej, ale robíme to veľmi rýchlo, ako je uvedené vyššie.
Vyberieme jednociferný displej, ktorý počkáme 2ms (premenná delay_time), aby ho MPU a 7segment mohli spracovať a potom túto číslicu vypnúť a prejsť na ďalšiu číslicu a robiť to isté, až kým nedosiahneme poslednú číslicu. Toto oneskorenie 2 ms nemôže byť pozorované ľudským okom a všetky štyri číslice sa javia ako zapnuté súčasne.
Posledná vec, ktorú sa to naučiť, je vedieť, ako funguje funkcia print_segment (variable) . Vo vnútri tejto funkcie používame polia, ktoré sme doteraz deklarovali. Takže akákoľvek premenná, ktorú pošleme tejto funkcii, by mala mať hodnotu medzi (0-9), znak premennej túto hodnotu prijme a porovná ju so skutočnou hodnotou. Tu sa premenná porovnáva s „1“. Podobne to porovnáme so všetkým číslom od 0 do 9. Ak ide o zhodu, použijeme polia a priradíme každú hodnotu k príslušným kolíkom segmentu, ako je uvedené nižšie.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Čas zobrazenia na 4-cifernom 7-segmentovom disku pomocou Raspberry Pi:
Použite schému a tu uvedený kód na vytvorenie spojení a podľa toho naprogramujte svoju malinovú pi. Keď je všetko hotové, spustite program a na sedemsegmentovom displeji by ste mali nájsť aktuálny čas. Existuje však niekoľko vecí, ktoré musíte skontrolovať predtým
- Uistite sa, že ste nastavili svoj Raspberry Pi na aktuálny čas pre prípad, že beží v režime offline.
- Napájajte svoje zariadenie Raspberry pi pomocou adaptéra, a nie pomocou prenosného počítača alebo počítača, pretože prúd, ktorý odoberá 7-segmentový displej, je vysoký a váš USB port ho nemôže napájať.
Ak všetko funguje podľa očakávaní, nižšie by ste mali nájsť niečo podobné.
Kompletné fungovanie týchto malinových hodín pi sa dá skontrolovať aj na videu uvedenom nižšie. Dúfam, že sa vám projekt páčil a páčilo sa vám jeho zostavenie. Dajte mi vedieť, čo si myslíte, alebo ak potrebujete pomoc.