- 7segmentový a 4místný 7segmentový zobrazovací modul:
- Připojení 4místného 7segmentového modulu k Raspberry Pi:
- Programování Raspberry Pi:
- Zobrazení času na 4místném 7segmentu pomocí Raspberry Pi:
Všichni víme, že Raspberry Pi je skvělá vývojová platforma založená na mikroprocesoru ARM. Díky své vysoké výpočetní síle dokáže zázraky v rukou fandů nebo studentů elektroniky. To vše je možné jen tehdy, pokud víme, jak to zajistit, aby interagovalo se skutečným světem, a analyzovat data pomocí nějakého výstupního zařízení. Existuje mnoho senzorů, které dokážou detekovat určité parametry ze světa v reálném čase a přenést je do digitálního světa a my je analyzujeme a prohlížíme je buď na LCD obrazovce nebo na jiném displeji. Vždy by však nebylo ekonomické používat k zobrazení malého množství dat LCD obrazovku s PI. Zde preferujeme použití 16x2 alfanumerického LCD displeje nebo 7segmentového displeje. Už jsme se naučili, jak používat alfanumerický LCD a jednosegmentový 7segmentový displej s Raspberry pi. Dnes budemeRozhraní 4místný sedmisegmentový zobrazovací modul s Raspberry Pi a zobrazení času přes něj.
Přestože 16x2 alfanumerický LCD displej je mnohem pohodlnější než 7segmentový displej, existuje několik scénářů, kdy by 7segmentový displej byl vhodnější než LCD displej. Displej LCD trpí nedostatkem malé velikosti znaků a bude nadměrný pro váš projekt, pokud právě plánujete zobrazit některé číselné hodnoty. Sedmikanálové segmenty mají také výhodu proti špatným světelným podmínkám a lze je prohlížet z nižších úhlů než na normální obrazovku LCD. Začněme to tedy vědět.
7segmentový a 4místný 7segmentový zobrazovací modul:
7 Segmentový displej má v sobě sedm segmentů a každý segment má uvnitř jednu LED pro zobrazení čísel rozsvícením odpovídajících segmentů. Stejně jako pokud chcete, aby sedmisegmentový segment zobrazoval číslo „5“, musíte segmenty a, f, g, c a d zažehnout tak, že jejich odpovídající kolíky budou vysoké. Existují dva typy 7segmentových displejů: Common Cathode a Common Anode, zde používáme sedmisegmentový displej Common Cathode. Další informace o sedmisegmentovém displeji najdete zde.
Nyní víme, jak zobrazit požadovaný číselný znak na jednom 7segmentovém displeji. Je však docela zřejmé, že bychom potřebovali více než jeden 7segmentový displej, abychom mohli přenášet jakékoli informace, které jsou více než jedna číslice. V tomto výukovém programu tedy budeme používat 4místný 7segmentový zobrazovací modul, jak je znázorněno níže.
Jak vidíme, jsou zde čtyři čtyři segmentové displeje. Víme, že každý 7segmentový modul bude mít 10 pinů a pro 4 sedmisegmentové displeje bude celkem 40 pinů a bylo by hektické, aby je kdokoli pájel na tečkovanou desku, takže bych každému velmi doporučil koupit si modul nebo si vytvořte vlastní desku plošných spojů pro použití 4místného 7segmentového displeje. Schéma připojení stejné je uvedeno níže:
Abychom pochopili, jak čtyřmístný sedmisegmentový modul funguje, musíme se podívat na výše uvedená schémata, jak je znázorněno, že piny A všech čtyř displejů jsou připojeny, aby se shromáždily jako jeden A a stejný pro B, C…. až DP. Takže pokud je A aktivováno, měly by všechny čtyři A jít vysoko, že?
Ale to se nestalo. Máme další čtyři piny od D0 do D3 (D0, D1, D2 a D3), které lze použít k ovládání toho, který displej ze čtyř by měl jít vysoko. Například: Pokud potřebuji, aby byl můj výstup přítomen pouze na druhém displeji, měl by být vysoký pouze D1, zatímco ostatní piny (D0, D2 a D3) by měly být nízké. Jednoduše můžeme vybrat, které zobrazení musí být aktivní pomocí kolíků od D0 do D3 a jaký znak se má zobrazit pomocí kolíků od A do DP.
Připojení 4místného 7segmentového modulu k Raspberry Pi:
Uvidíme, jak, jak můžeme tento 4místný 7segmentový modul propojit s naším Raspberry Pi. Sedmisegmentový modul má 16 pinů, jak je znázorněno níže. Váš modul může mít méně, ale nebojte se, bude mít určitě následující
- 7 nebo 8 segmentových kolíků (zde kolíky začínající od 1 do 8)
- Uzemňovací kolík (zde kolík 11)
- 4místné piny (zde piny 13 až 16)
Níže je uvedeno schéma digitálních hodin Raspberry Pi připojením čtyřmístného sedmisegmentového zobrazovacího modulu k Raspberry Pi:
Následující tabulka vám také pomůže při vytváření připojení a ověřování, zda odpovídá schématům uvedeným výše.
S.No |
Číslo RSP Pi GPIO |
Rsp Pi PIN číslo |
Název 7 segmentu |
7kolíkové číslo kolíku (zde v tomto modulu) |
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 |
Číslice 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
Číslice 2 |
14 |
11 |
GPIO 25 |
PIN 22 |
Číslice 3 |
15 |
12 |
GPIO 24 |
PIN 18 |
Číslice 4 |
16 |
13 |
Přízemní |
Přízemní |
Přízemní |
11 |
Určete piny na svém modulu a máte dobré pokračovat v připojení. Pozorování pinů GPIO v Raspberry pi může být trochu náročný úkol, proto jsem vám poskytl tento obrázek pro GPIO Pins.
Programování Raspberry Pi:
Zde používáme programovací jazyk Python pro programování RPi. Existuje mnoho způsobů, jak naprogramovat Raspberry Pi. V tomto kurzu používáme IDE Pythonu 3, protože je nejpoužívanější. Kompletní program Python je uveden na konci tohoto návodu. Další informace o Programování a spouštění kódu v Raspberry Pi najdete zde.
Budeme mluvit o několika příkazech, které použijeme v programu PYHTON pro tento projekt, Nejprve importujeme soubor GPIO z knihovny, níže uvedená funkce nám umožňuje naprogramovat GPIO piny PI. Přejmenováváme také „GPIO“ na „IO“, takže v programu, kdykoli budeme chtít odkazovat na piny GPIO, použijeme slovo „IO“. Také jsme importovali čas a datum a čas pro čtení hodnoty času z Rsp Pi.
import RPi.GPIO jako čas importu GPIO, datetime
Někdy, když piny GPIO, které se snažíme použít, mohou dělat nějaké další funkce. V takovém případě obdržíme varování při provádění programu. Níže uvedený příkaz říká PI, aby ignoroval varování a pokračoval v programu.
IO.setwarnings (False)
Můžeme označit GPIO piny PI, buď číslem kolíku na desce, nebo jejich číslem funkce. Jako „PIN 29“ na desce je „GPIO5“. Řekneme tedy, že zde buď budeme reprezentovat špendlík číslem '29' nebo '5'. GPIO.BCM znamená, že budeme představovat použití 5 pro pin 29 GPIO5.
IO.setmode (GPIO.BCM)
Jako vždy bychom měli začít inicializací pinů, zde jsou segmentové i číslicové piny výstupními piny. Pro účely programování vytvoříme pole pro segmentové piny a inicializujeme je na '0' poté, co je deklarujeme jako GPIO.
segment8 = (26,19,13,6,5,11,9,10) pro segment v segmentu8: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
Podobně pro číslicové piny je deklarujeme jako výstupní piny a ve výchozím nastavení je nastavíme na „0“
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) #Off zpočátku #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) #Off zpočátku #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) #Off zpočátku #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) #Off zpočátku
Musíme vytvořit pole pro zobrazení každého čísla na displeji se sedmi segmenty. Abychom zobrazili jedno číslo, musíme ovládat všech 7 segmentových pinů (kromě pinů s tečkami), to znamená, že musí být buď vypnuty, nebo zapnuty. Například pro zobrazení čísla 5 jsme provedli následující uspořádání
S.No |
Číslo RSP Pi GPIO |
Název 7 segmentu |
Stav k zobrazení '5'. (0-> VYPNUTO, 1-> ZAPNUTO) |
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 |
Podobně máme pořadové číslo pro všechna čísla a abecedy. Můžete psát sami nebo použít tabulku níže.
S těmito daty můžeme formovat pole pro každé číslo v našem pythonovém programu, jak je uvedeno níže.
null = nula = jedna = dvě = tři = čtyři = pět = šest = sedm = osm = devět =
Pokud budete postupovat podle programu, bude k dispozici funkce pro zobrazení každého znaku na našem 7segmentovém displeji, ale pojďme to zatím přeskočit a dostat se do nekonečné smyčky while . Kde načíst aktuální čas z Raspberry Pi a rozdělit hodnotu času mezi čtyři proměnné. Například pokud je čas 10,45, pak proměnná h1 bude mít 1, h2 bude mít 0, m1 bude mít 4 a m2 bude mít 5.
nyní = datetime.datetime.now () hodina = nyní.hodina minuta = nyní.minuta h1 = hodina / 10 h2 = hodina% 10 m1 = minuta / 10 m2 = minuta% 10 tisk (h1, h2, m1, m2)
Tyto čtyři proměnné hodnoty musíme zobrazit na našich čtyřech číslicích. K zápisu hodnoty proměnné na číslici můžeme použít následující řádky. Tady jsme zobrazeni na číslici 1 tím, že se zvýší, pak bude volána funkce print_segment (proměnná) , která zobrazí hodnotu v proměnné na segmentovém displeji. Možná by vás zajímalo, proč po tom máme zpoždění a proč po tomto vypínáme tuto číslici.
GPIO.output (7, 1) # Zapnout Digit One print_segment (h1) # Tisk h1 na segment time.sleep (delay_time) GPIO.output (7, 0) # Vypnout Digit One
Důvodem je, protože víme, že můžeme zobrazit pouze jednu číslici najednou, ale máme k dispozici čtyři číslice, které se mají zobrazit, a pouze pokud jsou zobrazeny všechny čtyři číslice, bude uživateli viditelné celé čtyřmístné číslo.
Jak tedy zobrazit všechny 4 číslice současně ?
Naštěstí pro nás je naše MPU mnohem rychlejší než lidské oko, takže to, co ve skutečnosti děláme: zobrazujeme jednu číslici po druhé, ale děláme to velmi rychle, jak je uvedeno výše.
Vybereme jednociferný displej, který čeká na 2ms (proměnná delay_time), aby jej MPU a 7segment mohli zpracovat a poté tuto číslici vypnout a přejít na další číslici a dělat totéž, dokud nedosáhneme poslední číslice. Toto zpoždění 2 ms nemůže lidské oko pozorovat a všechny čtyři číslice se zdají být zapnuté současně.
Poslední věc, kterou se to naučit, je vědět, jak funguje funkce print_segment (variable) . Uvnitř této funkce používáme pole, která jsme dosud deklarovali. Takže jakákoli proměnná, kterou posíláme této funkci, by měla mít hodnotu mezi (0-9), znak proměnné tuto hodnotu obdrží a porovná ji se skutečnou hodnotou. Zde se proměnná porovnává s „1“. Podobně porovnáváme se všemi čísly od 0 do 9. Pokud se jedná o shodu, použijeme pole a přiřadíme každou hodnotu příslušným pinům segmentu, jak je uvedeno níže.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Zobrazení času na 4místném 7segmentu pomocí Raspberry Pi:
Pomocí zde uvedeného schématu a kódu proveďte připojení a podle toho naprogramujte svou malinovou pí. Jakmile je vše hotové, spusťte program a na sedmi segmentovém displeji byste měli zjistit aktuální čas. Existuje však několik věcí, které musíte před tím zkontrolovat
- Ujistěte se, že jste nastavili svůj Raspberry Pi na aktuální čas pro případ, že běží v offline čase.
- Napájejte Raspberry pi pomocí adaptéru, nikoli pomocí notebooku / počítače, protože proud odebíraný 7segmentovým displejem je vysoký a váš USB port jej nemůže napájet.
Pokud vše funguje podle očekávání, měli byste níže najít něco podobného.
Kompletní fungování těchto hodin Raspberry Pi lze zkontrolovat také na videu níže. Doufám, že se vám projekt líbil a užili jste si jeho stavbu. Dejte mi vědět, co si myslíte, nebo pokud potřebujete pomoc.