/*Código que irá fazer um contagem binária:
mostrado a notação hexadecimal
usando 2 dusplays de 7 seg.
*/
#define DIG1 2
#define DIG2 4
#define DIG3 5
#define DIG4 21
int tempo= 1;
int vl1,vl2,vl3,vl4, cont;//valores para aparerecerem nos displays
//declaração de um vetor de 6 posições
//indices: 0,1,2,3, 4, 5
// A B, C, D , E, F, G
int seg[7]={18,19,22,23,12,14,27};
// A,B,C,D,E,F,G
int TabSeg[16][7]={1,1,1,1,1,1,0, //0
0,1,1,0,0,0,0, //1
1,1,0,1,1,0,1, //2
1,1,1,1,0,0,1, //3
0,1,1,0,0,1,1, //4
1,0,1,1,0,1,1, //5
1,0,1,1,1,1,1, //6
1,1,1,0,0,0,0, //7
1,1,1,1,1,1,1, //8
1,1,1,1,0,1,1, //9
1,1,1,0,1,1,1, //A
0,0,1,1,1,1,1, //b
1,0,0,1,1,1,0, //C
0,1,1,1,1,0,1, //d
1,0,0,1,1,1,1, //E
1,0,0,0,1,1,1}; //F }
void setup() {//configuração
pinMode(DIG1, OUTPUT);
pinMode(DIG2, OUTPUT);
pinMode(DIG3, OUTPUT);
pinMode(DIG4, OUTPUT);
//digitalWrite(DIG1, LOW);//ativa em LOW
//digitalWrite(DIG2, LOW);//ativa em LOW
for(int i=0;i<7;i++)
pinMode(seg[i], OUTPUT);
vl1=9; //hora
vl2=9; //hora
vl3=9; //minuto
vl4=9; //minuto
cont=0;
}
void loop() {//inicio da função loop
cont++;
if(cont>1000)
{
cont=0;
vl4--;
if(vl4<0){
vl4=9;
vl3--;
if(vl3<0)
vl3=9;
}
}
if(cont>3000)
{
cont=0;
vl2--;
if(vl2<0){
vl2=9;
vl1--;
if(vl1<0)
vl1=9;
}
}
EscreveNoDisplay(1,vl1);
//delay(tempo);
EscreveNoDisplay(2,vl2);
// delay(tempo);
EscreveNoDisplay(3,vl3);
//delay(tempo);
EscreveNoDisplay(4,vl4);
// delay(tempo);
// delay(tempo);
}//fim da função loop
void EscreveNoDisplay(int d,int v){
digitalWrite(DIG1, HIGH);
digitalWrite(DIG2, HIGH);
digitalWrite(DIG3, HIGH);
digitalWrite(DIG4, HIGH);
for(int j=0;j<7;j++){
digitalWrite(seg[j],TabSeg[v][j]);
}
if(d==1){
digitalWrite(DIG1, LOW);//ligar display 1
digitalWrite(DIG2, HIGH);//desligar display 2
}
else if(d==2){
digitalWrite(DIG2, LOW);//ligar display 2
digitalWrite(DIG1, HIGH);//desligar display 1
}
if(d==3){
digitalWrite(DIG3, LOW);//ligar display 3
digitalWrite(DIG4, HIGH);//desligar display 4
}
else if(d==4){
digitalWrite(DIG4, LOW);//ligar display 4
digitalWrite(DIG3, HIGH);//desligar display 3
}
}