C# týden Slevový týden - Březen
Využij náš slevový týden a získej až 30 % bodů navíc zdarma! Zároveň také probíhá C# týden se slevou na e-learning až 80 %
Hledáme fulltime programátora do ITnetwork týmu -100% homeoffice, 100% časově flexibilní #bezdeadlinu Mám zájem!

Elektronická hrací kostka s Arduinem

V dnešním tutoriálu si ukážeme, jak si postavit elektronickou hrací kostku s generátorem náhodných čísel. Vygenerované číslo budeme zobrazovat na znakovém LCD displeji (lze použít i hodinový displej).

Funkčnost

Cílovou funkci si popíšeme: po stisknutí tlačítka se na displeji vypíše náhodné číslo. Pokud budeme tlačítko držet, čísla se budou měnit každých 0.5 vteřiny.

Součástky

Co budeme potřebovat:

  • Vývojovou desku (v mém případě Arduino UNO)
  • Nepájivé kontaktní pole
  • Tlačítko
  • 4k7 rezistor
  • Znakový LCD displej nebo hodinový displej
  • Potenciometr
  • Vodiče

Stavba

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Nejdříve začneme s displejem. Já jsem použil LCD s modrým podsvícením a s dvěma řádkami o šestnácti znacích. LCD zapojíme podle schématu. Potenciometr připojíme na zem a na VO pin. Tímto potenciometrem si nastavíme kontrast textu. Piny potom zvolíme v programu. Na přesnější zapojení a práci s displejem se můžete podívat do tutoriálu LCD displej.

Zapojení LCD displeje do Arduina

Dále budeme potřebovat tlačítko, po jehož stisknutí nám Arduino vygeneruje náhodné číslo v rozmezí 1-6. Toto tlačítko připojíme přes 4k7 rezistor k plusu a propojíme ho s datový pinem z jedné strany. Tento pin je napojen na Arduino. Z druhé strany ho připojíme na zem. Ve schématu je zakreslen 330 ohm rezistor, ale já mám zkušenosti s odporem 4k7 (jinak by mohlo dojít ke zkratu). Generátor náhodných čísel se každopádně dá naprogramovat ke generování mnohem vyšších čísel, ale jelikož toto má být hrací kostka se šesti stěnami, použijeme jen malé rozmezí. Pokud chceme, můžeme si naši hračku naprogramovat tak, aby nám generovala čísla v rozmezí 1-10 (desetistěnná kostka).

K naší hračce si můžeme připojit i LED diodu, abychom věděli, že tlačítko je stisknuté. Ale to už je na vás. Tímto bychom měli mít stavbu hotovou. Já jsem připojil veliké červené tlačítko, aby bylo jednodušší k obsluze. (Na obrázu je i Arduino NANO, ale toho si nevšímejte). Má stavba vypadá nějak takto:

Hrací kostka pro Arduino

Programování

Generování náhodných čísel nám zajistí metoda randomSeed(). Do této metody pouze zadáme číslo pinu, na kterém se měří elektromagnetický šum, který může sloužit jako náhodná vstupní hodnota. Poté použijeme proměnnou random(max) nebo random(min,max). V našem případě random(1,7).

Nyní si otevřeme Arduino IDE a přesuneme k programu, který je zde:

#include <LiquidCrystal.h> // nahraje knihovnu pro displej
int rs_pin=A0; // nastavíme piny pro displej
int e_pin=A1;
int d4_pin=A2;
int d5_pin=A3;
int d6_pin=A4;
int d7_pin=A5;
LiquidCrystal LCD(rs_pin, e_pin, d4_pin, d5_pin, d6_pin, d7_pin); // definuje piny pro displej

void setup()
{
        pinMode(7,INPUT); // pin s tlačítkem jako vstup
        LCD.begin(16,2); // zahájí displej s dvěma řádky a šestnácti znaky
        Serial.begin(9600); // zapne sériovou komunikaci
        randomSeed(digitalRead(3)); // čte náhodu na digitálním pinu č.3
}

void loop()
{
        if (digitalRead(7)==LOW) // když je tlačítko stisknuté
        {
                LCD.setCursor(0,0); // nastaví kurzor na 1. znak
                LCD.print("nahodne cislo:"); // vypíše "náhodné číslo:"
                LCD.setCursor(5,5); // nastaví kurzor na 5. znak 2. řádky
                LCD.print("<"); // vypíše "<" na 5. znaku
                LCD.setCursor(7,5); // nastaví kurzor na 7. znak 2. řádky
                LCD.print(random(,7)); // napíše náhodné  číslo v rozmezí 1-6
                LCD.setCursor(9,5); // nastaví kurzor na 9. pozici
                LCD.print(">"); //vypíše ">" na 9. znaku
                Serial.println(random(1,7)); // vypíše náhodné číslo přes sériovou linku
        }
}

Jednotlivé části programu jsou popsány přímo ve zdrojovém kódu. Program si nahrajeme do Arduina. Po stisknutí tlačítka by se nám mělo na displeji objevit toto:

Hrací kostka na Arduino

Pokud vám naše hrací kostka funguje, tak přeji příjemnou zábavu při hraní deskových her. Pokud by jste měli nějaký problém s chodem hrací kostky, napište mi do komentářů. A to je pro dnešek vše.


 

 

Článek pro vás napsal @[email protected]
Avatar
Jak se ti líbí článek?
1 hlasů
Autor programuje v C++, Javě a Batchi. Zajímá se o elektroniku a především pracuje s Arduinem.
Všechny články v sekci
Arduino
Aktivity (2)

 

 

Komentáře

Avatar
Tomáš Kraj
Člen
Avatar
Tomáš Kraj:1.12.2019 9:42

Ahoj, nevím jak zapojit rezistor na tlačítku, ze schématu to není poznat, můžeš mi prosím poradit?Tomáš

 
Odpovědět
1.12.2019 9:42
Avatar
zitekv
Člen
Avatar
Odpovídá na Tomáš Kraj
zitekv:1.12.2019 11:52

Tyhlety "moderní" schémata mne drtí :-(
Připoj odpor na plus, druhý konec odporu na tlačítko a zároveň na vstupní pin arduina. Druhý kontakt tlačítka připoj na mínus (GND).
Pokud nebude tlačítko stisknuté bude na pinu přes odpor plus Vcc. Po stisknutí tam bude minus (GND).
Více třeba zde:
https://arduino.cz/…ka-rezistor/
Nebo napiš SZ.

 
Odpovědět
1.12.2019 11:52
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Tomáš Kraj
Člen
Avatar
Tomáš Kraj:1.12.2019 14:34

Díky za ten rezistor, už to chápu. Ve zdrojáku je myslím chyba:
LCD.print(ran­dom(,7)); // napíše náhodné číslo v rozmezí 1-6
asi to má být: LCD.print(ran­dom(1,7)); // napíše náhodné číslo v rozmezí 1-6

 
Odpovědět
1.12.2019 14:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.