Bem, já vou no meu terceiro projecto hoje...
Este consiste em carregar num botão e mostrar num display de 7 segmentos o contador. Foi programado através de interrupções... Eis o video:
E o Código:
// 0 -> 13,12,11,9,8,7
// 1 -> 11,9
// 2 -> 13,12,9,8,6
// 3 -> 12,11,9,8,6
// 4 -> 11,9,7,6
// 5 -> 12,11,8,7,6
// 6 -> 13,12,11,8,7,6
// 7 -> 11,9,8
// 8 -> 13,12,11,9,8,7,6
// 9 -> 12,11,9,8,7,6
int zero[]={13,12,11,10,9,8,7};
int um[]={11,9};
int dois[]={13,12,9,8,6};
int tres[]={12,11,9,8,6};
int quatro[]={11,9,7,6};
int cinco[]={12,11,8,7,6};
int seis[]={13,12,11,8,7,6};
int sete[]={11,9,8};
int oito[]={13,12,11,9,8,7,6};
int nove[]={12,11,9,8,7,6};
int todos[]={13,12,11,10,9,8,7,6};
int cont = 0;
void setup()
{
for(int i=0; i<sizeof(todos);i++)
{
pinMode(todos[i], OUTPUT);
}
for(int i=0; i<sizeof(zero);i++)
{
digitalWrite(zero[i],HIGH);
digitalWrite(10,LOW);
digitalWrite(6,LOW);
}
}
void loop()
{
attachInterrupt(0,mostrar,FALLING);
delay(1500);
}
void limpar()
{
for(int i=0; i<sizeof(todos);i++)
{
digitalWrite(todos[i], LOW);
}
}
void mostrar()
{
cont++;
switch(cont)
{
case 1:
{
limpar();
for(int i=0; i<sizeof(um);i++)
{
digitalWrite(um[i],HIGH);
digitalWrite(10,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
break;
}
case 2:
{
limpar();
for(int i=0; i<sizeof(dois);i++)
{
digitalWrite(dois[i],HIGH);
digitalWrite(11,LOW);
digitalWrite(10,LOW);
}
break;
}
case 3:
{
limpar();
for(int i=0; i<sizeof(tres);i++)
{
digitalWrite(tres[i],HIGH);
digitalWrite(13,LOW);
digitalWrite(10,LOW);
digitalWrite(7,LOW);
digitalWrite(13,LOW);
}
break;
}
case 4:
{
limpar();
for(int i =0; i<sizeof(quatro);i++)
{
digitalWrite(quatro[i],HIGH);
digitalWrite(13,LOW);
digitalWrite(10,LOW);
digitalWrite(12,LOW);
digitalWrite(10,LOW);
digitalWrite(8,LOW);
}
break;
}
case 5:
{
limpar();
for(int i=0; i<sizeof(cinco);i++)
{
digitalWrite(cinco[i],HIGH);
digitalWrite(13,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
}
break;
}
case 6:
{
limpar();
for(int i=0; i<sizeof(seis);i++)
{
digitalWrite(seis[i],HIGH);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
}
break;
}
case 7:
{
limpar();
for(int i=0; i<sizeof(sete);i++)
{
digitalWrite(sete[i],HIGH);
digitalWrite(13,LOW);
digitalWrite(12,LOW);
}
break;
}
case 8:
{
limpar();
for(int i=0; i<sizeof(oito);i++)
{
digitalWrite(oito[i],HIGH);
digitalWrite(10,LOW);
}
break;
}
case 9:
{
limpar();
for(int i=0; i<sizeof(nove);i++)
{
digitalWrite(nove[i],HIGH);
digitalWrite(13,LOW);
digitalWrite(10,LOW);
}
break;
}
default:
{
limpar();
for(int i=0; i<sizeof(zero);i++)
{
digitalWrite(zero[i],HIGH);
digitalWrite(10,HIGH);
digitalWrite(6,LOW);
}
cont=0;
break;
}
}
}