Dado electrónico con Arduino y TinkerCAD
En este proyecto aprenderemos a crear un dado electrónico con la ayuda de arduino y 6 LED’s.
Al presionar el interruptor, se ejecutará el programa y los LED’s se encenderán de forma consecutiva de izquierda a derecha y de derecha a izquierda y dejará encendido, de forma aleatoria cierto número de LED’s. En el monitor serie también podremos ver este resultado de forma numérica.
Material.
1 x | Arduino UNO | |
6 x | LED 5mm | |
6 x | Resistencia 220 Ohm | |
1 x | Resistencia 10k Ohm | |
1 x | Micro interruptor | |
1 x | Protoboard | |
cables varios |
Circuito
El esquema anterior lo realizamos utilizando la aplicación en línea TinKerCAD. ahí mismo puedes hacer la simulación antes de realizar el montaje del circuito.
PinOUT:
LED1 -> PIN2
LED2 -> PIN3
LED3 -> PIN4
LED5 -> PIN6
LED6 -> PIN7
Interruptor -> PIN9
/* www.ProveedoraCano.com Dadoelectrónico con arduino Presiona el micro interruptor para que se enciendan los LED's y despues de un corto tiempo algunos LED's se quedarán encendidos y otros se apagaran de forma aleatoria. En el monitor serie se verá el número arrojado y coincidirá con el número de led encendidos PIN OUT Interruptor -> PIN9 LED -> 2-7 */ // configurar 1 si estamos depurando #define DEBUG 0 // 6 pines digitales consecutivos para los LED int first = 2; int second = 3; int third = 4; int fourth = 5; int fifth = 6; int sixth = 7; // pin para el interruptor de botón int button = 9; // valor para comprobar el estado del interruptor de botón int pressed = 0; void setup() { // set all LED pins to OUTPUT for (int i=first; i<=sixth; i++) { pinMode(i, OUTPUT); } // establece el pin del botón en INPUT pinMode(button, INPUT); // inicializar la semilla aleatoria por ruido del pin analógico 0 (debe estar desconectado) randomSeed(analogRead(0)); // si estamos depurando, conéctese al serial #ifdef DEBUG Serial.begin(9600); #endif } void buildUpTension() { // ilumina los LED de izquierda a derecha y hacia atrás para aumentar la tensión // mientras espera que se lancen los dados // de izquierda a derecha for (int i=first; i<=sixth; i++) { if (i!=first) { digitalWrite(i-1, LOW); } digitalWrite(i, HIGH); delay(100); } // right to left for (int i=sixth; i>=first; i--) { if (i!=sixth) { digitalWrite(i+1, LOW); } digitalWrite(i, HIGH); delay(100); } } void showNumber(int number) { digitalWrite(first, HIGH); if (number >= 2) { digitalWrite(second, HIGH); } if (number >= 3) { digitalWrite(third, HIGH); } if (number >= 4) { digitalWrite(fourth, HIGH); } if (number >= 5) { digitalWrite(fifth, HIGH); } if (number == 6) { digitalWrite(sixth, HIGH); } } int throwDice() { // get a random number in the range [1,6] int randNumber = random(1,7); #ifdef DEBUG Serial.println(randNumber); #endif return randNumber; } void setAllLEDs(int value) { for (int i=first; i<=sixth; i++) { digitalWrite(i, value); } } void loop() { // si se presiona el botón - tira los dados pressed = digitalRead(button); if (pressed == HIGH) { // remove previous number setAllLEDs(LOW); buildUpTension(); int thrownNumber = throwDice(); showNumber(thrownNumber); } }
TinkerCAD
Te dejamos el proyecto en Tinkercad para que lo puedas examinar, si quieres ejecutarlo, da click en "Iniciar simulación", para ver el código da click en "Código".
Esperamos te sea de utilidad y que te diviertas construyéndolo.