#include "SevSeg.h"
SevSeg sevseg;
const int buttonPin = 16; // Pin donde se conecta el botón
bool buttonPressed = false;
unsigned long debounceDelay = 50; // Tiempo para evitar el rebote del botón
unsigned long lastDebounceTime = 0;
unsigned long lastUpdate = 0;
const unsigned long interval = 1000; // Intervalo de 1 segundo
int currentNumber = 0;
void setup() {
Serial.begin(115200); // Iniciar la comunicación serial para debugging
pinMode(buttonPin, INPUT_PULLUP); // Configurar el pin del botón como entrada con resistencia pull-up
randomSeed(analogRead(0)); // Semilla para la generación de números aleatorios
byte numDigits = 4;
byte digitPins[] = {21, 34, 35, 26}; // Pins de la placa ESP32 para los pines de los dígitos del display
byte segmentPins[] = {5, 23, 14, 12, 13, 18, 27}; // Pins de la placa ESP32 para los pines de los segmentos del display
bool resistorsOnSegments = true; // 'true' para indicar que no hemos añadido resistencias a los digit pins
byte hardwareConfig = COMMON_ANODE; // Programado para ánodo común
bool updateWithDelays = false;
bool leadingZeros = false;
bool disableDecPoint = false; // Decimal point del display conectado a la placa ESP32, por eso se indica con 'false'
// Ejecución de la configuración definida
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
}
void loop() {
unsigned long currentMillis = millis();
int reading = digitalRead(buttonPin);
// Manejo de rebote del botón
if (reading == LOW && (millis() - lastDebounceTime) > debounceDelay) {
lastDebounceTime = millis();
if (!buttonPressed) {
buttonPressed = true;
currentNumber = random(1, 7); // Generar un número aleatorio del 1 al 6
}
} else if (reading == HIGH) {
buttonPressed = false;
}
// Mostrar el número generado con la frecuencia deseada
if (currentMillis - lastUpdate >= interval) {
lastUpdate = currentMillis;
sevseg.setNumber(currentNumber);
}
sevseg.refreshDisplay();
delay(1); // Aceleramos la simulación
}