const byte pin[8] = { // arreglo con los pines de salida para cada segmento
4, //Pin segmento a
16, //Pin segmento b
17, //Pin segmento c
5, //Pin segmento d
18, //Pin segmento e
19, //Pin segmento f
21, //Pin segmento g
22 //Pin segmento punto
};
const byte numero[10] = { // Arreglo con los datos binarios por cada digito en version de catodo comun
0b11111100, // Numero 0
0b01100000, // Numero 1
0b11011010, // Numero 2
0b11110010, // Numero 3
0b01100110, // Numero 4
0b10110110, // Numero 5
0b10111110, // Numero 6
0b11100000, // Numero 7
0b11111110, // Numero 8
0b11110110, // Numero 9
};
void display(byte digito) { // Funcion display
for (int x = 0; x < 8; x++) { // Recorre todos los segmentos
digitalWrite(pin[x], 0); // Apaga cada bit del display
}
delay(200); // Mantiene por 200ms el display apagado
for (int x = 0; x < 8; x++) { // Recorre los segmentos
digitalWrite(pin[x], bitRead(numero[digito], 7 - x)); // Envia el dato binario de "numero" al display
}
delay(800); // Mantiene encendido el display por 800ms
}
void setup() {
pinMode(15, INPUT); // Asigna el pin 15 como entrada
for (int x = 0; x < 8; x++) { // Recorre el arreglo "pin"
digitalWrite(pin[x], 0); // Apaga cada pin del arreglo
pinMode(pin[x], OUTPUT); // Configura cada pin del arreglo como salida
}
}
void loop() {
if(digitalRead(15)){ // Evalua si preionaron en boton
int numeroRandom = 0; // Declara la variable "numeroRandom"
delay(50); // Espera 50 ms para evitar rebote del boton
if(digitalRead(15)){ // Vuelve a evaluar si sigue presionado el boton
numeroRandom = random(1,7); // genera un numero aleatorio de 1 a 6
display(numeroRandom); // Envia a la funcion display el numero generado
while(digitalRead(15)); // Espera hasta que se suelte el boton
}
}
}