int segmentos[2][7] = {{17,5,15,2,0,16,4},{22,23,12,13,18,21,19}};
int comumCat = 14;
//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 i =1;i<=2;i++){
for(int j =1;j<=7;j++) pinMode(segmentos[i][j], OUTPUT);
}
pinMode(comumCat, OUTPUT);
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
int ref = millis();
int num = 00;
int uni = 0;
int dez = 0;
int time = 100;
digitalWrite(comumCat, LOW);
do{
uni = num % 10;
dez = (num - uni) / 10;
if(millis() - ref >= (num)*time && millis() - ref < (num+1)*time){
ref = millis();
//unidade
ativarLED(uni,0);
//dezena
ativarLED(dez,1);
while(millis()-ref<(num+1)*time){
}
num++;
}
}while(num <= 11);
}
void ativarLED(int num, int led){
for(int i = 0; i < 7; i++){
digitalWrite(segmentos[led][i], bitRead(numeros[num],i));
//if(bitRead(numeros[num],i) == 1){
// digitalWrite(segmentos[led][i], HIGH);
//}else{
// digitalWrite(segmentos[led][i], LOW);
//}
}
}