// Programa para el funcionamiento de un dado electrónico
// Declaramos la variable para los pines de salida:
const int display[7] = {0, 4, 16, 17, 5, 18, 19};
// Formamos los números de acuerdo a los segmentos
const bool digitos[10][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
const int botonPin = 21; // Pin del botón
bool botonEstadoAnterior = LOW; // Estado previo del botón
void setup() {
Serial.begin(115200);
pinMode(0, OUTPUT); // Segmento a
pinMode(4, OUTPUT); // Segmento b
pinMode(16, OUTPUT); // Segmento c
pinMode(17, OUTPUT); // Segmento d
pinMode(5, OUTPUT); // Segmento e
pinMode(18, OUTPUT); // Segmento f
pinMode(19, OUTPUT); // Segmento g
pinMode(botonPin, INPUT); // Configurar el pin del botón como entrada con resistencia pull-up
// Si tu display necesita estar en un estado inicial conocido, puedes hacer esto:
for (int i = 0; i < 7; i++) {
digitalWrite(display[i], HIGH);
}
}
void loop() {
// Leer el estado del botón
bool botonEstado = digitalRead(botonPin);
// Si el botón se presiona (cambio de estado de HIGH a LOW)
if (botonEstado == LOW && botonEstadoAnterior == HIGH) {
int numeroAleatorio = random(0, 7); // Generar un número aleatorio entre 0 y 6
displayDigit(numeroAleatorio); // Mostrar el número aleatorio en el display
delay(1000); // Esperar 1 segundo
}
botonEstadoAnterior = botonEstado; // Actualizar el estado previo del botón
}
void displayDigit(int number) {
for (int i = 0; i < 7; i++) {
digitalWrite(display[i], HIGH);
}
delay(100);
for (int i = 0; i < 7; i++) {
digitalWrite(display[i], digitos[number][i]);
}
}