17. díl o Arduinu – 2. bitový sedmisegmentový displej

V dílech minulých jsme se zaměřili na sedmisegmentový displej, který dovedl zobrazit pouze jednu číslici, zobrazili jsme na něm čísla od 0 do 9 a pak jsme si vytvořili jednoduchý načítací efekt. Možností co by se na tom dalo vytvořit, je zcela jistě hodně, nicméně vše se již odvíjí od toho, že máme nějakou šablonu a v ní měníme údaje, nicméně pokud by mě napadlo něco, co by na něm bylo ještě pěkné, jistě to později doplním.

IMG_4550

Nyní se však pojďme podívat na to, jak se připojuje dvoubitový sedmisegmentový displej k Arduinu. Displej, který pro dnešní díl mám připravený, má úplně ty samé parametry jako ten předchozí jen s tím rozdílem, že má o jednu číslici navíc, nicméně je pro úplnost shrnu.

  • Barva: červená
  • max. proud na segment: 30 mA
  • Výška znaku: 14,2 mm
  • Úbytek napětí v propustném směru: 1,9-2,5 V
  • Společný vývod: Anoda
  • Počet pinů: 18

Z toho tedy vyplývá, že v každé z řad opět bude jedna anoda a tentokrát 8 katod. Displej se připojuje úplně stejně jako ten předchozí, jen s tím rozdílem, že bude zapotřebí opět daleko více odporů. Tentokrát ale nebude společná anoda vždy uprostřed, tento displej, který mám já má společnou anodu na pinu 13 a 14. Pro tento díl tedy budeme potřebovat následující, pro jeho úspěšné dokončení.

  • Desku Arduino
  • Sedmisegmentový displej, ale tentokrát se dvěma číslicemi
  • Dva anebo 16 odporů v závislosti na tom, zda má displej společnou anodu či katodu (pro anodu 16, pro katodu stačí dva)
  • Propojovací kabely
  • Bastldesku

Pokud toto všechno máme, pomalu ale jistě se můžeme pustit do toho, jak displej k Arduinu připojit. Pokud jste vytvářeli předchozí díl, můžete polovinu obvodu z něj použít, stačí jen displej dát na střed, přesně tam, kde byl původní a budou se muset doplnit jen krajní piny, tedy na každé straně dva a přehodit anodu ze spodní části do horní na jiný pin, protože v dolní jí tento displej nemá. V mém případě je nemohu rovnou připojit na desku, ale musím použít opět odpory, a protože používám desku DUE, která má 3.3V. Odpory, které budu používat, mají hodnotu 47 ohmů.

Připojení tedy probíhá stejně jako u předchozího displeje, více je na fotce nahoře anebo se můžete na mne obrátit v diskusi pod tímto článkem, rád vás navedu co a jak. Nyní se tedy zaměříme hlavně na programování. Opět to vezmu část po části, ale teď toho napíši více najednou. Tedy nákres toho, ke kterým pinům mám připojen který segment a masku, díky které budu zobrazovat čísla. Je důležité si uvědomit, že čísla jsou stejná a pokud chcete používat jen jednu masku pro zobrazení, musíte mít v poli za sebou všechny piny se segmenty stejně u obou znaků, jinak budete muset pro každé číslo vytvořit masku jinou. Můj kód vypadá takto:

/*

|--30--|--------|--38--|

46--33--------29----41

|--49--|--------|--25--|

42--53--------26----34

|--45--|-(50)--|--22--|---(37)

*/

byte piny_displeje_znak_jedna[] = {46,30,33,49,42,45,53,50};

byte piny_displeje_znak_dva[] = {29,38,41,25,26,22,34,37};

byte cisla_displeje[11][7] = {

{0,0,0,1,0,0,0},//0

{1,1,0,1,1,1,0},//1

{1,0,0,0,0,0,1},//2

{1,0,0,0,1,0,0},//3

{0,1,0,0,1,1,0},//4

{0,0,1,0,1,0,0},//5

{0,0,1,0,0,0,0},//6

{1,0,0,1,1,1,0},//7

{0,0,0,0,0,0,0},//8

{0,0,0,0,1,0,0},//9

{1,1,1,1,1,1,1},//nic

};

Ve funkci setup () nastavíme všechny piny na výstup a rovnou ten pin, ke kterému máme připojeny anody, můžeme nastavit na hodnotu HIGH. To nejzajímavější, co zde však bude, je funkce pro zobrazení čísla. Já jsem jí vyřešil takto:

void zobraz_cislo(int hodnota_cisla){

if(hodnota_cisla<10){

for(int i = 0; i<7; i++){

digitalWrite(piny_displeje_znak_jedna[i], cisla_displeje[10][i]);

digitalWrite(piny_displeje_znak_dva[i], cisla_displeje[hodnota_cisla][i]);

}

}

if(hodnota_cisla>9 && hodnota_cisla<100){

int jednotky = hodnota_cisla % 10;

int desitky = (hodnota_cisla - jednotky) / 10;

for(int i = 0; i<7; i++){

digitalWrite(piny_displeje_znak_jedna[i], cisla_displeje[desitky][i]);

digitalWrite(piny_displeje_znak_dva[i], cisla_displeje[jednotky][i]);

}

}

}

Nyní trochu tuto funkci zkusím vysvětlit. Funkce přijímá jeden parametr, což je číslo, které budeme volat z funkce loop() a které se má zobrazit. Ve funkci jsou dvě podmínky. Ta první se stará o čísla 0 – 9 a ta druhá o čísla 10 – 99. V každé podmínce je pak dále cyklus, který dělá jen to, že z pole, které jsme si vybrali dříve, vybírá konkrétní pin a tomu z masky, podle které zobrazujeme, buď přidává hodnotu 0 anebo 1, což přesně reprezentuje stav LOW a HIGH. Pokud vás v tuto chvíli napadlo něco okolo TTL, napadlo vás to správně, ale o TTL se budeme bavit až později. V této funkci tedy neděláme nic jiného, než že podle masky na určité piny dáváme napětí anebo jej vypínáme.

Pokud by jste se podívali na díl kde jsme s displejem začínali, děláme to samé jako bylo v tomto kódu:

if (cislo == 0) {

digitalWrite(1, LOW);

digitalWrite(2, LOW);

digitalWrite(3, LOW);

digitalWrite(4, LOW);

digitalWrite(5, LOW);

digitalWrite(6, LOW);

digitalWrite(7, HIGH);//kdyby byl zaplý

}

if(cislo == 1){

digitalWrite(1, LOW); //a tak dále…

}

//ted dlouho, dlouho nic az najednou

if(cislo == 827) {

       digitalWrite(1, LOW); //přeji příjemnou zábavu

Tímto cyklem jsme tedy udělali přesně to samé, jako bychom docílili tímto šíleným kódem, se kterým bych se opravdu psát nechtěl, nicméně jsou jedinci, kteří si práci usnadnit nechtějí a tak prosím, vytvářejte dle libosti, co se vám chce, nicméně pokud se to někomu alespoň do sta povede, pochlubte se se svým kódem pod článkem. 😉

My ostatní se budeme držet cyklu nahoře a tomuto poslednímu kódu se hodně velikým obloukem vyhneme.

Kód pro zobrazení číslic tedy máme a teď již neexistuje nic snadnějšího, než funkci zobraz_cislo() zavolat z funkce loop() s nějakým parametrem, v tomto případě to bude číslo.

zobraz_cislo(51)
Tímto se tedy nechá zobrazit na displeji číslo. Pro ty co by chtěli být aktivnější, mohou si funkci loop okořenit o nějakou proměnnou, která se s každým cyklem bude zvedat o +1 a budou v cyklu vykreslovat na displej. Výsledek by mohl vypadat například takto:




1. díl o Arduinu - Historie

Arduino je open-source platforma určená pro navrhování hraček a rychlou tvorbu prototypů nejrůznějších součástek. Platforma je založena na mikro-kontrolorech ATMega od firmy Atmel a grafickém vývojovém prostředí, které dá se říci, vychází z prostředí Wiring.

2. díl o Arduinu - typy desek

V současné době je na trhu opravdu velké množství nejrůznějších desek, které lze pro projekty v Arduinu použít. Některé jsou velmi vhodné, jiné vám budou způsobovat vrásky na čele. Jde totiž sehnat desku, pro jejíž programování je zapotřebí externí převodník, protože se sama přímo nedá připojit k PC.

3. díl o Arduinu - speciální typy desek

V minulém díle jsme se zaměřili na základní typy desek, na kterých je možné stavit projekty Arduino. Nyní se však pokusím zaměřit na speciální typy desek, které svůj účel mají, dá se říci svým způsobem předurčen. Jde totiž o desky, které nebudete potřebovat tak často, jako ty předchozí, ale v případě některých je dobré vědět, že existují, protože výsledné prototypování je díky nim o dost jednodušší.

4. díl o Arduinu – Shieldy

Arduino samo o sobě v některých verzích obsahuje různá vylepšení základní verze, viz mutace Arduina Uno na desky Ethernet nebo Bluetooth. Jako příklad si uvedeme připojení k Wi-Fi u stolního počítače.

5. díl o Arduinu – Seznamujeme se s deskou UNO

Než se pustíme do jakéhokoliv programování, popíšeme si trochu jednu z těch desek, kterou budeme ze začátku používat pro projekty. Touto deskou bude Arduino Uno. Arduino Uno je základní deska, která dovede pohánět všechny projekty, na kterých se budeme s Arduinem seznamovat.

6. díl o Arduinu – Připojujeme Arduino k PC a instalujeme IDE

Vývojové prostředí pro Arduino je napsané v jazyce Java. To znamená, že je dostupné pro všechny platformy, na kterých je Java dostupná, z těch hlavních zmíním Windows, Linux a Mac OS X, protože pro ty je již připravená instalace na oficiálních stránkách Arduina.

7. díl o Arduinu – První aplikace

Po minulém díle již máme Arduino plně připojené k PC a je plně funkční. Nyní se tedy podíváme na to, jak vytvořit úplně první program, který na našem Arduinu budeme spouštět.

8. díl o Arduinu - Bastldeska

V minulém díle jsme si představili jednoduchou aplikaci. Byl to, dá se říci počátek všeho, co je zapotřebí pro to, abychom na Arduinu začali cokoliv dělat. A tak po stopách předchozího dílu se nyní podíváme na to, jak k Arduinu připojit skutečnou LED diodu, abychom nebyli omezeni pouze na tu jednu, která je připojena k pinu číslo 13 v případě desky UNO.

9. díl o Arduinu - Připojujeme LED diodu

V předminulém díle jsme si vysvětlili, jak Arduino pracuje a vytvořili jsme jednoduchý program, který nám rozblikal diodu, která byla připojena k pinu číslo 13 přímo na desce Una.

10. díl o Arduinu - Připojujeme LED diody seriově

V minulém díle jsme připojovali jen jednu LED diodu, nyní se ale podíváme na to, jak zapojit více diod tak aby svítily společně a aby jejich zapojení bylo sériové. Sériovým zapojením se rozumí, že diody budou zapojeny za sebou. To znamená, že do této větve dvou diod bude zapotřebí umístit jen jeden jediný odpor.

11. díl o Arduinu - připojujeme LED diody paralelně

Po vzoru předchozího dílu, kdy jsme připojovali dvě diody sériově s odporem na Arduino a jednoho před ním, kdy jsme připojovali pouze jednu LED diodu s odporem, se dnes podíváme na to, jak správně zapojit LED diody paralelně.

12. díl o Arduinu - Připojujeme LED diody sériovoparalelně

V minulých dílech jsme si řekli všechno o tom, jak se připojují LED diody sériově i paralelně. Nyní nastal čas, abychom diody zapojili oběma způsoby najednou. To vše z toho důvodu, že například takto jsou zapojeny diody v LED páscích, proto je možné je stříhat.

13. díl o Arduinu - Blikáme LED diody napřeskáčku

O tom, jak zapojit LED diody víme již snad vše, nepřekvapí nás sériové zapojení, nezapotíme se u paralelního a kombinace obou najednou, je už také za námi. Nyní se ale podíváme na to, jak připojit dvě diody nezávisle na sobě, budeme tedy tvořit dva okruhy, kdy každý bude ovládaný zvlášť.

14. díl o Arduinu - Knight rider

Po vzoru předchozího dílu, kdy jsme sepínali diody proti sobě na dvou okruzích, se dnes podíváme na to, jak vytvořit světlo, které mělo auto se jménem K.I.T.T. ze seriálu Knight Rider. Způsobů by se jistě našlo více, nicméně ten, který se zde pokusím popsat je podle mě ten nejjednodušší.

15. díl o Arduinu - 1. bitový sedmisegmentový displej

O LED diodách a Arduinu již víme vše, nyní tedy trochu postoupíme a pokusíme se zapojit sedmi-segmentový displej a budeme na něm zobrazovat číslo. Tento displej se tedy skládá ze sedmi segmentů, respektive z osmi, pokud počítáme i tečku, které jsou označeny písmeny od A do G.

16. díl o Arduinu - 1. bitový sedmisegmentový displej - loading effect

V minulém díle jsme si připojili jeden sedmisegmentový displej, který dovedl zobrazit pouze jedno jediné číslo. Na tomto displeji jsme pak následně zobrazili číslice od 0-9. Nyní se však podíváme na jednoduchý kód, který by nám měl vytvořit jednoduchý efekt, podobný tomu, který možná často vidíte, když něco načítáte.

18. díl o Arduinu - maticové zapojení LED diod

V minulých dílech jsme začali displeje, které byly složeny z LED diod. Zobrazovali jsme na nich čísla a v jednom případě jsme i simulovali načítání. A i přes to, že jsem kdysi řekl, že z diod co se zapojení týče, je to snad vše, budeme se v tomto díle k nim vracet, protože existuje ještě jedno zapojení, které jsme si sice představili již dříve, ale tentokrát jej ještě trochu vylepšíme.

19. díl o Arduinu - 4. bitový sedmisegmentový displej

V minulém díle jsme si něco řekli o tom, jak se zapojují LED diody do matice. Vše, co jsme se v minulém díle naučili, se nám nyní bude hodit, protože se dnes pokusíme zapojit 4bitový sedmisegmentový displej, který právě maticového zapojení využívá.

20. díl o Arduinu - Sériový monitor

Dnes si řekneme něco o sériovém monitoru. Arduino když pracuje, tak existuje možnost, díky které Arduino zpět počítači, ke kterému je připojeno po seriové lince posílá nejrůznější informace. Tyto informace mohou být buď hodnoty z nějakého čidla či čidel, informace o tom, jestli je dané relé sepnuté či konkrétní dioda svítí a mnoho dalšího.

21. díl o Arduinu - připojujeme senzor DHT-11

V minulém díle jsme načali sériový monitor a dnes se na něm pokusíme zobrazit první data z čidla. Čidlo, které budeme pro náš pokus používat má označení DHT-11. Tento typ čidla je velmi oblíbený, protože měří teplotu a vlhkost.

22. díl o Arduinu - připojujeme senzor DHT-22

Minule jsme si představili senzor DHT-11, který je sice velmi oblíbený, ale zároveň ne moc přesný, proto se dnes podíváme na jeho vylepšenou verzi, tedy na senzor DHT-22. Senzor DHT-22 má tyto vlastnosti.

Speciál: Flashujeme Sonoff T1 firmwarem Tasmota přes Arduino UNO

V dnešním speciálním díle si představíme možnost, jak flashnout originální firmware ve spínačích Sonoff T1 na firmware Tasmota za pomocí desky Arduino UNO. Důvodů může být hned několik, proč to dělat takto. Tím prvním a hlavním, proč někdo tuto operaci dělá je možnost využívání spínače bez potřeby aplikace eWeLink a jejich cloudu. Tím druhým je pak to, že nemáme jiný způsob, jak spínač k PC připojit, abychom jej mohli flashnout.

.

PHGame.cz je podporován Vavada online kasino. Zaregistrujte se prostřednictvím odkazu a získejte uvítací bonus 100 freespinů.

.

pin up casino- Best Online betting