const int segA = D2;
const int segB = D3;
const int segC = D4;
const int segD = D5;
const int segE = D6;
const int segF = D7;
const int segG = D8;
const int boton = D10;
const unsigned long tiempoRebote = 50;
void apagarDisplay() {
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void mostrarDigito(int valor) {
apagarDisplay();
switch (valor) {
case 1:
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
break;
case 2:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segG, LOW);
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
break;
case 3:
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segG, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
break;
case 4:
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
break;
case 5:
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
break;
case 6:
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segG, LOW);
break;
default:
break;
}
}
void configuracionInicial() {
pinMode(segA, INPUT_PULLUP);
pinMode(segB, INPUT_PULLUP);
pinMode(segC, INPUT_PULLUP);
pinMode(segD, INPUT_PULLUP);
pinMode(segE, INPUT_PULLUP);
pinMode(segF, INPUT_PULLUP);
pinMode(segG, INPUT_PULLUP);
pinMode(segA, OUTPUT); digitalWrite(segA, HIGH);
pinMode(segB, OUTPUT); digitalWrite(segB, HIGH);
pinMode(segC, OUTPUT); digitalWrite(segC, HIGH);
pinMode(segD, OUTPUT); digitalWrite(segD, HIGH);
pinMode(segE, OUTPUT); digitalWrite(segE, HIGH);
pinMode(segF, OUTPUT); digitalWrite(segF, HIGH);
pinMode(segG, OUTPUT); digitalWrite(segG, HIGH);
pinMode(boton, INPUT_PULLUP);
randomSeed(analogRead(A0) ^ micros());
apagarDisplay();
}
void ejecucionPrincipal() {
static int estadoAnteriorBoton = HIGH;
static unsigned long ultimoTiempoRebote = 0;
int lecturaActual = digitalRead(boton);
if (lecturaActual != estadoAnteriorBoton) {
ultimoTiempoRebote = millis();
}
if ((millis() - ultimoTiempoRebote) > tiempoRebote) {
if (lecturaActual == LOW) {
int numeroAleatorio = random(1, 7);
mostrarDigito(numeroAleatorio);
while (digitalRead(boton) == LOW) {
delay(10);
}
delay(100);
}
}
estadoAnteriorBoton = lecturaActual;
}
void setup() {
configuracionInicial();
}
void loop() {
ejecucionPrincipal();
}