Mes visi esame susipažinę su kauliukais ir dažnai žaidėme LUDO arba SANP SIDI (Snake & Ladders) žaidimus, naudodami kauliukus. Kauliukai yra „squire“ tipo vientisa dėžutė, kurioje yra 6 skirtingi skaičiai iš visų pusių. Mes metame kauliukus ant paviršiaus, kad žaisdami žaidimus gautume atsitiktinį skaičių. Šiame projekte mes bandėme jį pakartoti skaitmeniniais kauliukais, naudodami „arduino uno“ lentą. Vietoje mėtymo kauliuko čia turime paspausti mygtuką, kad gautume atsitiktinį skaičių nuo 0 iki 6.
Reikalingi komponentai
- „Arduino UNO“
- Septynių segmentų ekranas (bendras anodas)
- Paspauskite mygtukus
- Jungiamieji laidai
- Bandomoji Lenta
- 1 k rezistorius
- Maitinimo šaltinis
Grandinės schema ir paaiškinimas
Kaip parodyta aukščiau pateiktoje skaitmeninių kauliukų grandinėje, „arduino“ naudojamas viso proceso valdymui. Grandinėje naudojami du mygtukai - vienas kauliukui pradėti, kitas - kauliukui nustatyti iš naujo. „Arduino“ perskaito šiuos du mygtukus ir atlieka operaciją. Kauliukų rezultatui rodyti naudojamas septynių segmentų ekranas.
„Arduino“ nuolat vykdo rand () funkciją ir išsaugojo jos vertę laikinajame kintamajame. Paspaudus kauliukų mygtuką, apskaičiuojama saugi vertė ir rodoma septyniuose segmentuose, naudojant tinkamą metodą (žr. Programavimo straipsnio dalį).
Čia šioje kauliukų grandinėje kauliukų skaičiams rodyti naudojamas bendras anodo septynių segmentų ekranas, kuris yra tiesiogiai prijungtas prie „Arduino“ skaitmeninių kaiščių numerių 6, 5, 4, 3, 2, 1, 0. Ir bendras septynių segmentų anodo kaištis yra sujungtas su +5 voltų 220 omų rezistoriumi. Taip pat yra prijungti du mygtukai, būtent kauliukų mygtukas ir atstatymo mygtukas, kurie yra prijungti prie skaitmeninių kaiščių 14 (A0) ir 15 (A1) žemės atžvilgiu.
Kodo paaiškinimas
Šio projekto programavimo dalis vaidina labai svarbų vaidmenį rodant atsitiktinį skaitmeninių kauliukų skaičių septynių segmentų ekrane. „Arduino“ nėra septynių segmentų rodymo bibliotekos. taigi mes sukūrėme visą kodą nenaudodami jokios bibliotekos.
Pirmiausia septynių segmentų ekranui pasirenkame skaitmeninį kaištį.
int kaištis = {6,5,4,3,2,1,0};
Po to mes sukuriame 6 skaitmenų kauliukų masyvą, ty 1, 2, 3, 4, 5 ir 6.
simbolis = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Dabar mes nurodėme naudoti arduino kaištį kaip išvestį.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (kauliukai, INPUT); pinMode (nustatyti iš naujo, INPUT); „digitalWrite“ (kauliukai, AUKŠTAI); „digitalWrite“ (iš naujo nustatyti, HIGH);
Pagal numatytuosius nustatymus mes siunčiame kodą rodyti nulį septynių segmentų ekrane.
int temp = 0x40; už (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; „digitalWrite“ (kaištis, temp1); temp = temp >> 1; }
Dabar vykdome rand () funkciją, kad gautume atsitiktinį skaičių.
int temp = randas ();
Kai paspaudžiame kauliukų mygtuko programą, pirmiausia suskirstykite šį atsitiktinį skaičių ir paskui nusiųskime numerį į septynių segmentų ekraną, naudodami bitų išmintingą operatorių.
if (digitalRead (kauliukai) == 0) {int k = temp% 6; temp = skaitmuo; laukti(); už (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; „digitalWrite“ (kaištis, temp1); temp = temp >> 1; } vėlavimas (200); }
Tas pats ir atstatymo mygtukui.
Šioje programoje mes siunčiame vieną bitą vienu metu. Čia mes taikome ciklo ciklą, kuris veikia 7 kartus ir siunčia duomenis kiekvienam segmentui po vieną.