byte digits[10] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
const int digit_pins[] = {A2, A3, A4, A5};
int hours = 0;
int minutes = 0;
int seconds = 0;
void setup()
{
for (int i = 6; i <= 13; i++)
pinMode(i, OUTPUT);
for (int i = 0; i < 4; i++)
{
pinMode(digit_pins[i], OUTPUT);
digitalWrite(digit_pins[i], HIGH);
}
}
/* Display digit at the certain position */
void display_digit(unsigned short int pos, unsigned short int digit)
{
for (int i = 6; i <= 13; i++)
digitalWrite(i, bitRead(digits[digit], i-6));
digitalWrite(digit_pins[pos], LOW);
}
/* Return screen to initial state */
void clear_display()
{
for (int i = 6; i <= 13; i++)
digitalWrite(i, LOW);
for (int i = 0; i < 4; i++)
digitalWrite(digit_pins[i], HIGH);
}
void loop()
{
// Incrementar segundos
seconds++;
// Verificar si ha pasado un minuto
if (seconds >= 60) {
seconds = 0;
minutes++;
}
// Verificar si ha pasado una hora
if (minutes >= 60) {
minutes = 0;
hours++;
}
// Verificar si es un nuevo día
if (hours >= 24) {
hours = 0;
}
// Convertir las horas y minutos a dígitos individuales para mostrarlos en el display
int tens_of_hours = hours / 10;
int ones_of_hours = hours % 10;
int tens_of_minutes = minutes / 10;
int ones_of_minutes = minutes % 10;
// Mostrar el tiempo en formato HHMM
int values[] = {tens_of_hours, ones_of_hours, tens_of_minutes, ones_of_minutes};
// Refrescar el display
for (int i = 0; i < 4; i++)
{
clear_display();
display_digit(i, values[i]);
delay(0.0000000000000000001); // Pequeño retraso para evitar parpadeo, ajustado a este tiempo para su rapidez
}
// Esperar 1 segundo antes de actualizar los segundos, ajustado a este tiempo para su rapidez
delay(0.000000000000000000001);
}