// Define los pines del display de 7 segmentos (cátodo común)
const int pinG = 22;
const int pinF = 23;
const int pinA = 21;
const int pinB = 19;
const int pinE = 5;
const int pinD = 18;
const int pinC = 17;
// Define el pin del botón
const int pinBoton = 2; // Ajusta el número de pin según la conexión física
// Variable para almacenar el último estado del botón
int estadoAnteriorBoton = HIGH;
void setup() {
// Configura los pines del display como salidas
pinMode(pinG, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinC, OUTPUT);
// Configura el pin del botón como entrada con pull-up interno
pinMode(pinBoton, INPUT_PULLUP);
}
void mostrarNumero(int numero) {
// Apaga todos los segmentos
digitalWrite(pinG, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinC, LOW);
// Enciende los segmentos correspondientes al número
switch (numero) {
case 1:
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
break;
case 2:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinG, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinD, HIGH);
break;
case 3:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinG, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
break;
case 4:
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
break;
case 5:
digitalWrite(pinA, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
break;
case 6:
digitalWrite(pinA, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinC, HIGH);
break;
}
delay(500); // Espera 500 ms antes de apagar los segmentos
}
int generarNumeroAleatorio() {
// Genera un número aleatorio entre 1 y 6
return random(1, 7);
}
void loop() {
// Verifica el estado del botón
int estadoBoton = digitalRead(pinBoton);
// Comprueba si el botón ha sido presionado
if (estadoBoton == LOW && estadoAnteriorBoton == HIGH) {
// Genera un número aleatorio y lo muestra en el display
int numeroAleatorio = generarNumeroAleatorio();
mostrarNumero(numeroAleatorio);
}
// Almacena el estado actual del botón para la próxima iteración
estadoAnteriorBoton=estadoBoton;
}