Elektronická hracia kocka s Arduino
V predchádzajúcej lekcii, Tvorba vlastnej Arduino knižnice - OOP v praxi , sme si ukázali, ako sa tvoria vlastné jednoduché knižnice pre Arduino.
V dnešnom tutoriále si ukážeme, ako si postaviť elektronickú hraciu kocku s generátorom náhodných čísel. Vygenerované číslo budeme zobrazovať na znakovom LCD displeji (možno použiť i hodinový displej).
Funkčnosť
Cieľovou funkciu si popíšeme: po stlačení tlačidla sa na displeji vypíše náhodné číslo. Ak budeme tlačidlo držať, čísla sa budú meniť každých 0.5 sekundy.
Súčiastky
Čo budeme potrebovať:
- Vývojovú dosku (v mojom prípade Arduino UNO)
- Nepájivé kontaktné pole
- tlačidlo
- 4k7 rezistor
- Znakový LCD displej alebo hodinový displej
- potenciometer
- vodiče
Stavba
Najskôr začneme s displejom. Ja som použil LCD s modrým podsvietením as dvoma riadkami o šestnástich znakoch. LCD zapojíme podľa schémy. Potenciometer pripojíme na zem a na VO pin. Týmto potenciometrom si nastavíme kontrast textu. Piny potom zvolíme v programe. Na presnejšiu zapojenie a prácu s displejom sa môžete pozrieť do tutoriálu LCD displej.
Ďalej budeme potrebovať tlačidlo, po ktorého stlačení nám Arduino vygeneruje náhodné číslo v rozmedzí 1-6. Toto tlačidlo pripojíme cez 4k7 rezistor k plusu a prepojíme ho s dátový pinom z jednej strany. Tento pin je napojený na Arduino. Z druhej strany ho pripojíme na zem. V schéme je zakreslený 330 ohm rezistor, ale ja mám skúsenosti s odporom 4k7 (inak by mohlo dôjsť ku skratu). Generátor náhodných čísel sa každopádne dá naprogramovať na generovanie omnoho vyšších čísel, ale keďže toto má byť hracia kocka so šiestimi stenami, použijeme len malé rozmedzí. Ak chceme, môžeme si našu hračku naprogramovať tak, aby nám generovala čísla v rozmedzí 1-10 (desetistěnná kocka).
K našej hračke si môžeme pripojiť aj LED diódu, aby sme vedeli, že tlačidlo je stlačené. Ale to už je na vás. Týmto by sme mali mať stavbu hotovú. Ja som pripojil veliké červené tlačidlo, aby bolo jednoduchšie na obsluhu. (Na obraze je aj Arduino NANO, ale toho si nevšímajte). Má stavba vyzerá nejako takto:
Programovanie
Generovanie náhodných čísel nám zaistí metóda randomSeed (). Do tejto metódy len zadáme číslo pinu, na ktorom sa meria elektromagnetický šum, ktorý môže slúžiť ako náhodná vstupná hodnota. Potom použijeme premennú random (max) alebo random (min, max). V našom prípade random (1,7).
Teraz si otvoríme Arduino IDE a presunieme k programu, ktorý je tu:
#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é časti programu sú popísané priamo v zdrojovom kóde. Program si nahráme do Arduino. Po stlačení tlačidla by sa nám malo na displeji objaviť toto:
Ak vám naša hracia kocka funguje, tak prajem príjemnú zábavu pri hraní doskových hier. Ak by ste mali nejaký problém s chodom hracie kocky, napíšte mi do komentárov. A to je pre dnešok všetko.
Nabudúce, v lekcii Arduino a práca s tlačidlami , si ukážeme prácu so samostatnými tlačidlami.