int segmentos[7] = {0,23,12,13,18,21,19};
int comumCat[2] = {14,2};
//Desafio: usar multiplexação para usar apenas 5 pinos (usar o fato do display ter 2 pinos para o pino comum. Assim os pinos que compartilham o mesmo pino ficariam acessos por 20 ms cada)
int numeros[10] = {B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00000111, B01111111, B01101111}; //0, 1, 2, 3, ..., em binário.
void setup() {
// put your setup code here, to run once:
//Definição de entradas e saídas
for(int j = 1;j <= 7; j++) pinMode(segmentos[j], OUTPUT);
for(int i = 1;i <= 2; i++) pinMode(comumCat[i], OUTPUT);
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
int ref = millis();
int num = 00;
int time = 100;
for(int i = 1;i <= 2; i++) digitalWrite(comumCat[i], LOW);
do
{
if(millis() - ref >= (num)*time && millis() - ref < (num+1)*time){
ref = millis();
ativarLEDs(num);
while(millis()-ref<(num+1)*time){
}
num++;
}
}while(num <= 11);
}
void ativarLEDs(int num){
int ref = millis();
int uni = num % 10;
int dez = (num - uni) / 10;
do{
//unidade
digitalWrite(14, LOW);
digitalWrite(0, HIGH);
for(int i = 0; i < 7; i++) digitalWrite(segmentos[i], bitRead(numeros[uni],i));
delay(400);
//dezena
digitalWrite(0, LOW);
digitalWrite(14, HIGH);
for(int i = 0; i < 7; i++) digitalWrite(segmentos[i], bitRead(numeros[dez],i));
delay(400);
}while(millis() - ref<=1000);
}