Vsi poznamo kocke in smo s kockami pogosto igrali LUDO ali SANP SIDI (Snake & Ladders). Kocka je trdna škatla squire, ki vsebuje 6 različnih številk na vseh straneh. Kocke vržemo na površino, da dobimo naključno število med igranjem iger. V tem projektu smo ga poskušali ponoviti z digitalnimi kockami z uporabo arduino uno plošče. Namesto metanja kocke moramo tukaj pritisniti gumb, da dobimo naključno število med 0 in 6.
Zahtevane komponente
- Arduino UNO
- Sedemsegmentni zaslon (skupna anoda)
- Tipke
- Priključne žice
- Deska za kruh
- 1 k upor
- Napajanje
Shema vezja in razlaga
Kot je prikazano v zgornjem krogu digitalnih kock, se arduino uporablja za nadzor celotnega procesa. V vezju se uporabljata dva gumba - eden za zagon kocke in drugi za ponastavitev kocke. Arduino prebere ta dva gumba in izvede operacijo. Za prikaz rezultatov kock se uporablja sedemsegmentni zaslon.
Arduino neprekinjeno izvaja funkcijo rand () in je svojo vrednost shranil v začasno spremenljivko. Ko pritisnete gumb kocke, shranite vrednost, ki se izračuna in prikaže na sedmih segmentih z uporabo ustrezne metode (glej programski del članka).
Tu v tem krogu kock se za prikaz številk kock uporablja skupni anodni sedemsegmentni zaslon, ki je neposredno povezan z arduino digitalnimi številkami pinov 6, 5, 4, 3, 2, 1, 0. In skupni anodni pin sedmih segmentov je povezan z uporom +5 voltov 220 Ohm. Povezana sta tudi dva gumba, in sicer gumb za kocke in gumb za ponastavitev, ki sta povezana z digitalnima nožicama 14 (A0) in 15 (A1) glede na tla.
Razlaga kode
Programski del tega projekta igra zelo pomembno vlogo za prikaz naključnih številk digitalnih kock na sedemsegmentnem zaslonu. Arduino ne vsebuje knjižnice za sedemsegmentni prikaz. zato smo ustvarili celotno kodo brez uporabe knjižnice.
Najprej izberemo digitalni pin za sedemsegmentni zaslon.
int pin = {6,5,4,3,2,1,0};
Po njem ustvarimo vrsto 6 števk kock, in sicer 1, 2, 3, 4, 5 in 6.
številka char = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Zdaj smo napotili uporabo arduino pin-a kot izhoda.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (kocke, INPUT); pinMode (resett, INPUT); digitalWrite (kocke, VISOKO); digitalWrite (resett, HIGH);
Privzeto pošljemo kodo za prikaz ničle na sedemsegmentnem zaslonu.
int temp = 0x40; za (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Zdaj zaženemo funkcijo rand (), da dobimo naključno število.
int temp = rand ();
In ko pritisnemo na gumb gumba za kocke, najprej naključno številko preslikamo in nato z uporabo bitnega operaterja pošljemo številko na sedemsegmentni prikaz.
if (digitalRead (dice) == 0) {int k = temp% 6; temp = številka; počakajte (); za (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } zamuda (200); }
In enako za gumb za ponastavitev.
V tem programu pošiljamo po en bit naenkrat. Tu uporabljamo zanko for, ki deluje sedemkrat in pošlje podatke vsakemu segmentu enega za drugim.