APRENDE A SIMULAR TIRAR UN
DADO CON EL ARDUINO Y 6 LEDS
Dados LED
¡Aprende a simular tirar un
dado con el Arduino y 6 LEDs!
MPONENTES Y SUMINISTROS
Arduino UNO y Genuino UNO
LED (genérico)
Interruptor pulsador SparkFun
de 12 mm
Cables de puente (genéricos)
Resistencia 1k ohm
Resistencia 221 ohmios
SOBRE ESTE PROYECTO
Hice un prototipo de
lanzamiento de dados: si presiona el botón, se genera un número aleatorio entre
1 y 6 y se enciende el número correspondiente de LED.
// *
//Arduino:
//Este ejemplo muestra cómo
simular lanzar un dado con 6 LED. El circuito:
//* 6 LED conectados a pines
digitales consecutivos (con resistencias de 220 Ohm)
//* Interruptor de botón
conectado a un pin digital (ver circuito en ):
//Este código de ejemplo está
en el dominio público.
// se establece en 1 si
estamos depurando
//#define DEBUG 0 // 6 pines
digitales consecutivos para los LED
//Este es el circuito
esquemático hecho con Fritzing para el prototipo de dados.
//El circuito:
//* 6 LED conectados a pines
digitales consecutivos (con resistencias de 220 ohmios)
//* Interruptor de botón
conectado a un pin digital.
//Este ejemplo muestra cómo
simular lanzar un dado con 6 LED. El circuito: * 6 LED conectados a pines
digitales consecutivos (con resistencias de 220 Ohm)
//* Interruptor de botón
conectado a un pin digital ver circuito en :
//https://ingenieriaiktronic.com
//https://roboticaytecnologia.com
#define DEBUG 0
// 6 consecutive digital pins
for the LEDs
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 = 12;
// valor para verificar el
estado del interruptor de botón
int pressed = 0;
void setup() {
// establece todos los pines LED en SALIDA
for (int i=first; i<=sixth; i++) {
pinMode(i, OUTPUT);
}
// set buttin pin to INPUT
pinMode(button, INPUT);
// inicializar semilla aleatoria por ruido del
pin analógico 0 (debe estar desconectado)
randomSeed(analogRead(0));
// si estamos depurando, conectamos a serial
#ifdef DEBUG
Serial.begin(9600);
#endif
}
void buildUpTension() {
// enciende los LED de izquierda a derecha y
hacia atrás para aumentar la tensión
// mientras esperas 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() {
// obtener un número aleatorio en el rango
[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);
}
}



No hay comentarios.:
Publicar un comentario