Pamilyar tayong lahat sa dice at madalas na nilalaro ang LUDO o SANP SIDI (Ahas at Ladder) na laro sa pamamagitan ng paggamit ng dice. Ang dice ay isang solidong uri ng squire na naglalaman ng 6 na magkakaibang numero sa lahat ng panig nito. Nagtatapon kami ng dice sa isang ibabaw upang makakuha ng isang random na numero habang naglalaro ng mga laro. Sa proyektong ito sinubukan naming kopyahin ito ng isang digital dice gamit ang arduino uno board. Sa lugar ng paghagis ng dice, narito kailangan nating pindutin ang isang pindutan upang makakuha ng isang random na numero sa pagitan ng 0 hanggang 6.
Mga Kinakailangan na Bahagi
- Arduino UNO
- Pitong segment na pagpapakita (Karaniwang Anode)
- Itulak ang mga pindutan
- Mga kumokonekta na mga wire
- Bread board
- 1 k risistor
- Supply ng kuryente
Circuit Diagram at Paliwanag
Tulad ng ipinakita sa itaas na digital dice circuit, ang arduino ay ginagamit para sa pagkontrol ng buong proseso. Ginagamit ang dalawang pindutan ng push sa circuit - isa upang simulan ang dice at iba pa para sa pag-reset ng dice. Binabasa ni Arduino ang dalawang mga pindutan na ito at isagawa ang operasyon. Ginagamit ang isang pitong segment na pagpapakita upang ipakita ang resulta ng dice.
Ang Arduino ay patuloy na nagpapatupad ng function ng rand () at naimbak ang halaga nito sa isang pansamantalang variable. Kapag ang pindutan ng dice ay napindot ang nakaimbak na halaga na kinakalkula at ipinapakita sa pitong segment sa pamamagitan ng paggamit ng naaangkop na pamamaraan (tingnan ang bahagi ng programa ng artikulo).
Dito sa circuit ng dice, isang karaniwang anode pitong segment na display ang ginagamit para sa pagpapakita ng mga numero ng dice, na direktang konektado sa arduino digital pin na numero 6, 5, 4, 3, 2, 1, 0. At ang karaniwang anode pin na pitong segment ay konektado sa +5 volt 220 Ohm risistor. Ang dalawang pindutan ng push ay konektado din katulad ng dice button at reset button na konektado sa digital pin 14 (A0) at 15 (A1) na patungkol sa ground.
Paliwanag sa Code
Ang bahagi ng pagpoproseso ng proyektong ito ay may mahalagang papel upang maipakita ang random na digital dice number sa pitong segment na pagpapakita. Ang Arduino ay walang nilalaman na anumang library para sa pitong segment na pagpapakita. kaya nilikha namin ang buong code nang hindi gumagamit ng anumang library.
Una sa lahat pipiliin namin ang digital pin para sa pitong segment na pagpapakita.
int pin = {6,5,4,3,2,1,0};
Pagkatapos nito ay lumilikha kami ng isang hanay ng 6 na digit ng dice na katulad ng 1, 2, 3, 4, 5 at 6.
char digit = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Nagbigay kami ngayon ng direksyon upang magamit ang arduino pin bilang output.
void setup () {para sa (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (dice, INPUT); pinMode (resett, INPUT); digitalWrite (dice, MATAAS); digitalWrite (resett, HIGH);
Nagpadala kami ng isang code para sa pagpapakita ng zero sa pitong segment na display bilang default.
int temp = 0x40; para sa (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Ngayon nagpapatakbo kami ng rand () na pag-andar upang makakuha ng isang random na numero.
int temp = rand ();
At kapag pinindot namin ang programa ng pindutan ng dice unang mapa ang random na numero na ito at pagkatapos ay ipadala ang numero sa pitong segment na pagpapakita sa pamamagitan ng paggamit ng medyo matalinong operator.
kung (digitalRead (dice) == 0) {int k = temp% 6; temp = digit; maghintay (); para sa (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } pagkaantala (200); }
At pareho para sa pag-reset ng pindutan.
Sa program na ito nagpapadala kami ng solong bit nang paisa-isa. Dito nag-a-apply kami ng isang para sa loop na tatakbo ng 7 oras upang magpadala ng data sa bawat segment nang paisa-isa.