Lekce 8 – 7-Segmentový displej

V dnešním díle si k Arduinu připojíme 2 druhy 7-segmentového dipleje. V prvním případě půjde o klasické LED 7-segmentové zobrazovače a ve druhém půjde o diplej z tekutých krystalů, který jsem vyhrabal v šuplíku.

blogmedia-dscf2396-jpg.jpg

K připojení dipleje nepoužijeme klasický převdník BCD kódu pro zobrazovače, ale připojíme si ho přímo k Arduinu. V tomto případě nepoužijeme Arduinu UNO z důvodu malého počtu digitálních pinů (nadruhou stranu jich má UNO právě 14 – což umožnuje připojení 2 čislic, ale nezbyde nám další žádný volný pin). Samozřejmně i na UNO se toto dá vyzkoušet, avšach pro praktištější zapojení s dalšími vstupy a výstupy se nehodí. BCD převodník nám sice umožní připojit číslici na 4 piny, ale pro tento projekt jsem žádný v zasobě nenašel a projekt by to vytvořilo složitější a dražší.

Takže, v prvním případě použijeme displej z tekutých krystalů. Bohužel na mém dipleji jsem žádný napis nenašel, ale po delším pátrání jsem nalezl výrobce tohoto displeje. Jedná se o firmu http://www.display-elektronik.de. Tato se zabývá výrobou dipleju, ale můj již v nabídce nemá. Vycházím však z podobných tzpů displejů výrobce. Displej má 2 a 1/2 číslice. Půlka znamená, že jedna číslice zobrazí pouze čislo 1. Celkem má 16 vývodů. Po trošce bádání jsem zjistil, že displej má společnou anodu (+) na pinu 16 a z ostatních datasheetů jsem zjistil, že pracovní napští je 3,3 až 5V. Po trošce zkoušení jsem si udělal diagram zapojení a nyní již stačí k displeji napsat potřebný kód. Podobné displeje stojí na našem trhu v této velikosti od 40 do 100 Kč.

stažený-soubor

 

Důležité je též si rozvrhnout jaké segmenty číslovky se mají zobrazit. Nejdříve jsem si pro čísla načtrl tabulku a tu pomocí byte[][] (třírozměrné pole byte) impementoval do funkce, která jednotlivé čislovky vykresluje.

blogmedia-picsart-1361976242191-1-jpg.jpg

Jak můžete v kódu vidět, možnost změny připojení je snadné provést změnou čísel pinů v nastavení jednotlivých čísel na začátku kódu. Zkusil jsem to podrobněji okomentovat, aby jste vše pochopili. Kód je optimalizovaný pro můj displej z tekutých krystalů. Pro jiné typy je potřeba provést drobné úpravy.

Jak jste si také všimli, v datovém poli, kde jsou uložené číslice jsou také na indexu 10 data pro zhasnutí celé číslice a také můžeme zobrazit znak “E” a “-“. To se nám hodí, když potřebujeme zobrazit, že hodnota není v rozmezí pro náš displej. V tomto případě můžeme zobrazit číslo 0 – 199. Pro dvojmístné displeje to bude 0-99. K zobrazenení čísla 199 je nutné (2 x 7) + (1 pin na číslovku 1) pinů z našeho Arduina.

Program v cyklu trvající 25 milisekund zobrazuje na dipleji číslo od 0 do 199 a v dalším připadě protože je hodnota nastavena až dé 299 zobrazuje pro demostraci chybovou hlášku “-E”, že hodnota je mimo rozsah.

blogmedia-dscf2392-jpg.JPG

 

V zapojení můžete vidět, že nebyly použity žádné jiné součástky, kromě samotného displeje propojovacích vodičů a mini nepajivého kontaktního pole. V druhém případě, kdy si připojíme 7-segmentové LED zobrazovače již další součástky budou potřeba. Vzhledem k tomu, že segmenty číslovky od firmy Kingbright SA-52 pracují s napětím 2 až 2,2V (I=20mA) budeme muset každý segment připojit přes odpor 1,3kOhmu (při napětí z výstupů Arduina 5V).  Samotné desetiné tečky na zobrazovači připojeny nebudou v tomto zapojení, budeme tedy potřebovat pro 2 číslice celkem 14 odporů o hodnotě 1,3kOhmu. Já sám jsem je při zkoušení v takovém množstí nenašel, použil jsem tedy jiné hodnoty a to výšší, s tím, že LED displej tolik nesvítí a je dobře čitelný až při nižším osvětlení (poznámka: použil jsem u jedné číslice odpory 27kOhmů a u druhé 18kOhmů a číslice šly i přesto přečíst).

blogmedia-dscf2397-jpg.jpg

 

Popis pinů jednotlivých segmentů u LED 7-segmentové displeje se společnou anodou (+):

blogmedia-7-segment-all-off-alpha-name-jpg.jpg

V programu oproti předchozímu zapojení s diplejem s tekutých krystalů musíme provést malé úpravy. Stačí pouze zakomentovat nejaké řádky, protože zde nám chybí číslovka třetí a to naše jednička pro zobrazení stovek. Já sem upravený zdrojový kód vkládat nebudu ale je ke ztažení zde.

Výslek jak v jednom tak ve druhém případě, múžete vidět na videu:

lej/

2 Komentářů

  1. Tom

    Dobrý den.
    Jen malé upozornění k použití LCD segmentovek.
    Nevím, jaký typ jste použil, ale zatím všechny tyto jednoduché typy, které znám, potřebují střídavé napájení se ss složkou max. desítky mV. Kmitočet 20 – 200Hz.
    Při použití vašeho programu se displej patrně brzo zničí.
    V praxi se to řeší tak, že se periodicky jednotlivé piny a spol. vývod invertují.

  2. LuBoss

    Souhlasím s Tomem ohledně černobílých LCD a nutnosti použít střídavé napětí. Nicméně v dnešní době je asi již výhodnější a nakonec i levnější použít nějaký grafický displej. Například modul á la Nokia 5110, nebo rovnou nějaký barevný TFT LCD. Ale samozřejmě taková pěkná LED sedmisegmentovka s výškou číslice alespoň 2 palce má také něco do sebe a lidé s horším zrakem ji budou milovat a autorovi blahořečit 🙂

Napsat komentář

Translate »