Tots coneixem els daus i sovint jugem al joc LUDO o SANP SIDI (Snake & Ladders) fent servir daus. Els daus són una caixa sòlida de tipus escuder que conté 6 números diferents a tots els seus costats. Tirem daus sobre una superfície per obtenir un número aleatori mentre jugem als jocs. En aquest projecte hem intentat replicar-lo amb un dau digital mitjançant una placa arduino uno. En lloc de llançar els daus, aquí hem de prémer un botó per obtenir un número aleatori entre 0 i 6.
Components necessaris
- Arduino UNO
- Pantalla de set segments (ànode comú)
- Polsadors
- Connexió de cables
- Taula de pa
- 1 k resistència
- Font d'alimentació
Diagrama del circuit i explicació

Com es mostra al circuit de daus digitals anterior, l'arduino s'utilitza per controlar tot el procés. Al circuit s’utilitzen dos botons polsadors: un per iniciar els daus i un altre per restablir els daus. Arduino llegeix aquests dos botons i realitza l'operació. S'utilitza una pantalla de set segments per mostrar el resultat dels daus.
Arduino executa contínuament la funció rand () i emmagatzema el seu valor en una variable temporal. Quan es prem el botó de da, es calcula el valor emmagatzemat i es mostra en set segments mitjançant el mètode adequat (vegeu la part de programació de l'article).
Aquí, en aquest circuit de daus, s’utilitza una pantalla comuna de set segments d’ànode per mostrar números de daus, que està connectada directament als números de pin digital arduino 6, 5, 4, 3, 2, 1, 0. I el pin d’ànode comú de set segments és connectat amb una resistència de +5 volts de 220 Ohm. També es connecten dos polsadors, és a dir, el botó de daus i el botó de reinicialització que estan connectats als pins digitals 14 (A0) i 15 (A1) respecte a terra.
Explicació del codi
La programació d’una part d’aquest projecte té un paper molt important per mostrar el número de daus digitals aleatoris en una pantalla de set segments. Arduino no conté cap biblioteca per a la visualització de set segments. de manera que vam crear codi complet sense fer servir cap biblioteca.
Primer de tot, seleccionem el pin digital per a la visualització de set segments.
int pin = {6,5,4,3,2,1,0};
Després, creem una matriu de 6 dígits de daus, és a dir, 1, 2, 3, 4, 5 i 6.
dígit de caràcters = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Ara vam donar instruccions per utilitzar el pin arduino com a sortida.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (daus, INPUT); pinMode (restabliment, INPUT); digitalWrite (daus, ALT); digitalWrite (restabliment, HIGH);
Per defecte, enviem un codi per mostrar zero a la pantalla de set segments.
int temp = 0x40; for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Ara executem la funció rand () per obtenir un nombre aleatori.
int temp = rand ();
I quan premem el programa del botó de daus, primer mapeu aquest número aleatori i, a continuació, envieu el número a la visualització de set segments mitjançant un operador de bit sage.
if (digitalRead (daus) == 0) {int k = temp% 6; temp = dígit; wait (); for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } retard (200); }
I el mateix per al botó de reinici.
En aquest programa enviem un bit a la vegada. Aquí apliquem un bucle for que s'executa set vegades per enviar dades a cada segment un per un.
