Mēs visi esam pazīstami ar kauliņiem un bieži spēlējām LUDO vai SANP SIDI (Snake & Ladders) spēli, izmantojot kauliņus. Dice ir stingra lodziņš, kura malās ir 6 dažādi skaitļi. Mēs metam kauliņus uz virsmas, lai spēlējot spēles iegūtu nejaušu skaitli. Šajā projektā mēs esam mēģinājuši to atkārtot ar digitālo kauliņu, izmantojot arduino uno dēli. Kauliņu mešanas vietā šeit jānospiež poga, lai iegūtu nejaušu skaitli no 0 līdz 6.
Nepieciešamās sastāvdaļas
- Arduino UNO
- Septiņu segmentu displejs (kopējais anods)
- Spiediet pogas
- Savienojošie vadi
- Maizes dēlis
- 1 k rezistors
- Enerģijas padeve
Shēmas shēma un paskaidrojums
Kā parādīts iepriekš minētajā digitālo kauliņu ķēdē, visa procesa kontrolēšanai tiek izmantots arduino. Ķēdē tiek izmantotas divas spiedpogas - viena, lai sāktu kauliņu, un otra, lai atiestatītu kauliņu. Arduino nolasa šīs divas pogas un veic darbību. Septiņu segmentu displejs tiek izmantots, lai parādītu kauliņu rezultātu.
Arduino nepārtraukti izpilda rand () funkciju un saglabāja tās vērtību pagaidu mainīgajā. Nospiežot kauliņu pogu, tiek aprēķināta saglabātā vērtība un parādīta septiņos segmentos, izmantojot atbilstošu metodi (skat. Raksta programmēšanas daļu).
Šeit šajā kauliņu ķēdē kauliņu numuru parādīšanai tiek izmantots kopējs anoda septiņu segmentu displejs, kas ir tieši saistīts ar arduino digitālo tapu numuriem 6, 5, 4, 3, 2, 1, 0. Un septiņu segmentu kopējā anoda tapa ir savienots ar +5 voltu 220 Ohm rezistoru. Ir pievienotas arī divas spiedpogas, proti, kauliņu poga un atiestatīšanas poga, kas ir savienotas ar digitālo tapu 14 (A0) un 15 (A1) attiecībā pret zemi.
Kods Paskaidrojums
Šī projekta programmēšanas daļai ir ļoti svarīga loma, lai septiņu segmentu displejā parādītu nejaušu digitālo kauliņu numuru. Arduino nav nevienas bibliotēkas septiņu segmentu displejam. tāpēc mēs izveidojām visu kodu, neizmantojot nevienu bibliotēku.
Vispirms mēs izvēlamies digitālo tapu septiņu segmentu displejam.
int tapa = {6,5,4,3,2,1,0};
Pēc tā mēs izveidojam masīvu no 6 kauliņu cipariem, proti, 1, 2, 3, 4, 5 un 6.
char cipars = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Tagad mēs devām norādījumu izmantot arduino tapu kā izvadi.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (kauliņš, INPUT); pinMode (atiestatīt, INPUT); digitalWrite (kauliņš, AUGSTS); digitalWrite (atiestatīt, HIGH);
Pēc noklusējuma mēs nosūtām kodu nulles parādīšanai septiņu segmentu displejā.
int temp = 0x40; par (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (tapa, temp1); temp = temp >> 1; }
Tagad mēs palaižam rand () funkciju, lai iegūtu nejaušu skaitli.
int temp = rand ();
Kad mēs nospiežam kauliņu pogas programmu, vispirms kartējiet šo nejaušo skaitli un pēc tam nosūtiet numuru uz septiņu segmentu displeju, izmantojot mazliet gudru operatoru.
ja (digitalRead (kauliņš) == 0) {int k = temp% 6; temp = cipars; pagaidiet (); par (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (tapa, temp1); temp = temp >> 1; } kavēšanās (200); }
Un tas pats atiestatīšanas pogai.
Šajā programmā mēs vienlaikus sūtām vienu bitu. Šeit mēs izmantojam for ciklu, kas darbojas 7 reizes, lai pa vienam nosūtītu datus katram segmentam.