Všichni známe kostky a často jsme pomocí kostek hráli hry LUDO nebo SANP SIDI (Snake & Ladders). Kostky jsou pevná krabice typu Squire, která na všech svých stranách obsahuje 6 různých čísel. Hodíme kostkami na povrch, abychom při hraní her dostali náhodné číslo. V tomto projektu jsme se pokusili replikovat to pomocí digitálních kostek pomocí desky arduino uno. Místo házení kostkou zde musíme stisknout tlačítko, abychom získali náhodné číslo mezi 0 a 6.
Požadované komponenty
- Arduino UNO
- Sedmisegmentový displej (společná anoda)
- Tlačítka
- Připojovací vodiče
- Chlebová deska
- 1 k rezistor
- Zdroj napájení
Schéma zapojení a vysvětlení
Jak ukazuje výše uvedený obvod digitálních kostek, arduino se používá k řízení celého procesu. V obvodu se používají dvě tlačítka - jedno pro spuštění kostek a druhé pro resetování kostek. Arduino načte tato dvě tlačítka a provede operaci. K zobrazení výsledku kostky se používá sedmisegmentový displej.
Arduino neustále provádí funkci rand () a ukládá její hodnotu do dočasné proměnné. Po stisknutí tlačítka kostky se pomocí příslušné metody vypočítá uložená hodnota a zobrazí se na sedmi segmentech (viz programovací část článku).
Zde v tomto kostkovém obvodu se pro zobrazení čísel kostek používá společný anodový sedmisegmentový displej, který je přímo připojen k číslům arduino digitálních pinů 6, 5, 4, 3, 2, 1, 0. A společný anodový pin sedmi segmentů je připojeno k rezistoru +5 voltů 220 Ohm. Jsou také připojena dvě tlačítka, jmenovitě kostkové tlačítko a resetovací tlačítko, které jsou připojeny k digitálnímu kolíku 14 (A0) a 15 (A1) vzhledem k zemi.
Vysvětlení kódu
Programovací část tohoto projektu hraje velmi důležitou roli pro zobrazení náhodného čísla digitálních kostek na sedmisegmentovém displeji. Arduino neobsahuje žádnou knihovnu pro zobrazení sedmi segmentů. takže jsme vytvořili celý kód bez použití jakékoli knihovny.
Nejprve vybereme digitální pin pro sedmisegmentový displej.
int pin = {6,5,4,3,2,1,0};
Poté vytvoříme pole 6 číslic kostek, konkrétně 1, 2, 3, 4, 5 a 6.
char číslice = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Nyní jsme dali směr, abychom jako výstup použili pin arduino.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (kostky, VSTUP); pinMode (resett, INPUT); digitalWrite (kostky, VYSOKÉ); digitalWrite (resett, HIGH);
Standardně odesíláme kód pro zobrazení nuly na sedmisegmentovém displeji.
int temp = 0x40; for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); teplota = teplota >> 1; }
Nyní spustíme funkci rand (), abychom získali náhodné číslo.
int temp = rand ();
A když stiskneme program tlačítka kostky, nejprve namapujte toto náhodné číslo a poté odešlete číslo na sedmisegmentové zobrazení pomocí bitového operátoru.
if (digitalRead (kostky) == 0) {int k = teplota% 6; teplota = číslice; Počkejte(); for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); teplota = teplota >> 1; } zpoždění (200); }
Totéž pro resetovací tlačítko.
V tomto programu posíláme jeden bit po druhém. Zde aplikujeme smyčku for, která běží sedmkrát a posílá data do každého segmentu jeden po druhém.