//Actividad 2. Programación del display de siete
//segmentos: dado electrónico
// Se Definen los pines para los segmentos del display de 7 segmentos cátodo común
int a = 23;
int b = 22;
int c = 21;
int d = 19;
int e = 18;
int f = 5;
int g = 17;
// Se define el Pin para el botón
int botonPin = 12;
// Array que define el patrón de encendido de los segmentos para los números del 1 al 6
// Cada número es representado por un valor binario donde cada bit controla un segmento: abcdefg
int displayNumbers[6] = {
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101 // 6
};
void setup() {
// Se configura los pines de los segmentos como salida
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
// Se configura el pin del botón como entrada
pinMode(botonPin, INPUT);
// Se inicializa la comunicación serial, para que muestre en el monitor los números que se generan al pulsa el botón.
Serial.begin(115200);
}
void loop() {
// Se verifica si se ha presionado el botón
if (digitalRead(botonPin) == LOW) {
// Si el botón está presionado, se genera un número aleatorio entre 1 y 6
int numeroAleatorio = random(1, 7); // random(1, 7) genera un número entre 1 y 6
// Se muestra el número generado en el display de 7 segmentos
displayNumber(numeroAleatorio);
// Se imprime el número en el monitor serial
Serial.print("Número generado: ");
Serial.println(numeroAleatorio);
// Se da tiempo de un minuto para evitar lecturas múltiples rápidas del botón
delay(1000); // Espera 1 segundo
}
else {
// Si el botón no está presionado, se apaga el display
apagarDisplay();
}
}
// Función para mostrar un número en el display de 7 segmentos
void displayNumber(int num) {
// Se obtiene el patrón binario para el número
int pattern = displayNumbers[num - 1]; // Se ajusta para que los índices vayan de 0 a 5
// Asignamos cada bit del patrón a los segmentos del display
digitalWrite(a, bitRead(pattern, 0));
digitalWrite(b, bitRead(pattern, 1));
digitalWrite(c, bitRead(pattern, 2));
digitalWrite(d, bitRead(pattern, 3));
digitalWrite(e, bitRead(pattern, 4));
digitalWrite(f, bitRead(pattern, 5));
digitalWrite(g, bitRead(pattern, 6));
}
// Función para apagar el display (opcional)
void apagarDisplay() {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}