const int pinA = D2;
const int pinB = D3;
const int pinC = D4;
const int pinD = D5;
const int pinE = D6;
const int pinF = D7;
const int pinG = D8;
const int buttonPin = D10;
const unsigned long debounceDelay = 50;
void clearDisplay() {
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}
void showNumber(int n) {
clearDisplay();
switch (n) {
case 1:
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
break;
case 2:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinD, LOW);
break;
case 3:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
break;
case 4:
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
break;
case 5:
digitalWrite(pinA, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
break;
case 6:
digitalWrite(pinA, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinG, LOW);
break;
default:
// nada
break;
}
}
void setup() {
pinMode(pinA, INPUT_PULLUP);
pinMode(pinB, INPUT_PULLUP);
pinMode(pinC, INPUT_PULLUP);
pinMode(pinD, INPUT_PULLUP);
pinMode(pinE, INPUT_PULLUP);
pinMode(pinF, INPUT_PULLUP);
pinMode(pinG, INPUT_PULLUP);
pinMode(pinA, OUTPUT); digitalWrite(pinA, HIGH);
pinMode(pinB, OUTPUT); digitalWrite(pinB, HIGH);
pinMode(pinC, OUTPUT); digitalWrite(pinC, HIGH);
pinMode(pinD, OUTPUT); digitalWrite(pinD, HIGH);
pinMode(pinE, OUTPUT); digitalWrite(pinE, HIGH);
pinMode(pinF, OUTPUT); digitalWrite(pinF, HIGH);
pinMode(pinG, OUTPUT); digitalWrite(pinG, HIGH);
pinMode(buttonPin, INPUT_PULLUP);
randomSeed(analogRead(A0) ^ micros());
clearDisplay();
}
void loop() {
static int lastButtonState = HIGH;
static unsigned long lastDebounceTime = 0;
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading == LOW) {
int numero = random(1, 7);
showNumber(numero);
while (digitalRead(buttonPin) == LOW) {
delay(10);
}
delay(100);
}
}
lastButtonState = reading;
}