int pinos_ESP[] = {15, 2, 4, 16, 17, 5, 18};
int display1 = 27; // Dezena
int display2 = 14; // Unidade
byte numeros[10][7] = {
{0,0,0,0,0,0,1}, //0
{1,0,0,1,1,1,1}, //1
{0,0,1,0,0,1,0}, //2
{0,0,0,0,1,1,0}, //3
{1,0,0,1,1,0,0}, //4
{0,1,0,0,1,0,0}, //5
{0,1,0,0,0,0,0}, //6
{0,0,0,1,1,1,1}, //7
{0,0,0,0,0,0,0}, //8
{0,0,0,0,1,0,0} //9
};
unsigned long tempoAnterior = 0;
int contador = 0;
const int intervalo = 300; // Tempo de contagem definido para 300ms
void setup() {
for(int i=0; i<7; i++) pinMode(pinos_ESP[i], OUTPUT);
pinMode(display1, OUTPUT);
pinMode(display2, OUTPUT);
digitalWrite(display1, LOW);
digitalWrite(display2, LOW);
}
void mostrarNumero(int num) {
for(int i=0; i<7; i++) {
digitalWrite(pinos_ESP[i], numeros[num][i]);
}
}
void limparDisplay() {
for(int i=0; i<7; i++) digitalWrite(pinos_ESP[i], HIGH);
}
void loop() {
// LÓGICA DE CONTAGEM: Verifica se passaram 300ms
if (millis() - tempoAnterior >= intervalo) {
tempoAnterior = millis();
contador++;
if (contador > 99) contador = 0;
}
// LÓGICA DE EXIBIÇÃO (Multiplexação)
int dezena = contador / 10;
int unidade = contador % 10;
// Mostra Dezena
limparDisplay();
digitalWrite(display2, HIGH);
digitalWrite(display1, LOW);
mostrarNumero(dezena);
delay(5); // Tempo de "brilho" para o olho humano
// Mostra Unidade
limparDisplay();
digitalWrite(display1, HIGH);
digitalWrite(display2, LOW);
mostrarNumero(unidade);
delay(5); // Tempo de "brilho" para o olho humano
}DISPLAY2
DISPLAY1