Všetci poznáme kocky a často sme pomocou kocky hrali hry LUDO alebo SANP SIDI (Snake & Ladders). Kocky sú pevná krabica typu Squire, ktorá obsahuje 6 rôznych čísel na všetkých svojich stranách. Hodíme kockami na plochu, aby sme pri hraní hier dostali náhodné číslo. V tomto projekte sme sa to pokúsili replikovať pomocou digitálnych kociek pomocou dosky arduino uno. Namiesto hodu kockou musíme stlačiť tlačidlo, aby sme dostali náhodné číslo od 0 do 6.
Požadované komponenty
- Arduino UNO
- Sedemsegmentový displej (spoločná anóda)
- Tlačidlá
- Pripojovacie vodiče
- Chlebová doska
- 1 k rezistor
- Zdroj
Schéma zapojenia a vysvetlenie
Ako je zrejmé z vyššie uvedeného obvodu digitálnych kociek, arduino sa používa na riadenie celého procesu. V obvode sa používajú dve tlačidlá - jedno na spustenie kocky a druhé na resetovanie kocky. Arduino prečíta tieto dve tlačidlá a vykoná operáciu. Na zobrazenie výsledku kocky sa používa sedemsegmentový displej.
Arduino nepretržite vykonáva funkciu rand () a jej hodnotu ukladá do dočasnej premennej. Po stlačení tlačidla kocky sa uložená hodnota vypočíta a zobrazí na siedmom segmente pomocou vhodnej metódy (viď programovacia časť článku).
Tu v tomto kockovom obvode sa na zobrazenie čísel kociek používa spoločný anódový sedemsegmentový displej, ktorý je priamo spojený s arduinovým digitálnym pinom číslo 6, 5, 4, 3, 2, 1, 0. A spoločný anódový pin siedmich segmentov je pripojený k rezistoru +5 voltov 220 Ohm. Pripojené sú tiež dve tlačidlá, konkrétne kockové tlačidlo a resetovacie tlačidlo, ktoré sú pripojené k digitálnemu kolíku 14 (A0) a 15 (A1) vzhľadom na zem.
Vysvetlenie kódu
Programová časť tohto projektu hrá veľmi dôležitú úlohu pri zobrazovaní náhodného čísla digitálnych kociek na sedemsegmentovom displeji. Arduino neobsahuje žiadnu knižnicu pre sedemsegmentové zobrazenie. takže sme vytvorili celý kód bez použitia akejkoľvek knižnice.
Najskôr vyberieme digitálny pin pre sedemsegmentový displej.
int pin = {6,5,4,3,2,1,0};
Potom vytvoríme pole 6 číslic kociek, konkrétne 1, 2, 3, 4, 5 a 6.
znaková číslica = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Teraz sme dali smer, aby sme ako výstup použili pin arduino.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (kocky, VSTUP); pinMode (resett, INPUT); digitalWrite (kocky, VYSOKÉ); digitalWrite (reset, HIGH);
Štandardne posielame kód na zobrazenie nuly na sedemsegmentovom displeji.
int temp = 0x40; pre (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); teplota = teplota >> 1; }
Teraz spustíme funkciu rand (), aby sme dostali náhodné číslo.
int temp = rand ();
A keď stlačíme program s kockami, najskôr namapujte toto náhodné číslo a potom pošlite číslo na sedem segmentové zobrazenie pomocou bitového operátora.
if (digitalRead (kocky) == 0) {int k = teplota% 6; teplota = číslica; počkaj (); pre (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); teplota = teplota >> 1; } oneskorenie (200); }
A to isté pre resetovacie tlačidlo.
V tomto programe posielame jeden bit po druhom. Tu aplikujeme slučku for, ktorá beží 7-krát na to, aby poslala údaje do každého segmentu jeden po druhom.