sexta-feira, 7 de agosto de 2015

Acionando um display de 7 segmentos no Arduino

Acionar display de 7 segmentos são tão divertidos quanto LED de qualquer natureza, mesmo os RGB. As utilidades permitidas são praticamente infinitas! Além de mostrar números é possível realizar alguns “efeitos especiais” com eles.
Vamos acionar apenas um display de 7 segmentos dessa vez, para compreender como eles funcionam.
Usaremos:
Um display de 7 segmentos com ânodo comum

Dois resistores de 560 ohms (verde-azul-marrom)
Também vamos precisar de uma placa de ensaios (proto-board), Arduíno e alguns fios rígidos para as ligações.
Coloque o seu display de 7 segmentos na placa de ensaios, ligue o terra (GND) do Arduino em um dos barramentos laterais e com um fio ligue esse barramento lateral ao outro. Usando o resistor de 560 ohms ligue os pinos comuns do display de 7 segmentos ao terra (que estão nos barramentos laterais).


Sabendo que os segmentos do display são:

Ligaremos os pinos digitais do Arduino ao display na seguinte ordem:

Pino
Segmento
3
A
4
B
5
C
6
D
7
E
8
F
9
G



Com o código abaixo se mostra os números de zero até nove, aguardando um segundo entre as trocas de números:

int a = 3, b = 4, c = 5, d = 6, e = 7, f = 8, g = 9;
int num[10][7] = {
{a,b,c,d,e,f},
{b,c},
{a,b,e,d,g},
{a,b,c,d,g},
{b,c,f,g},
{a,c,d,g,f},
{a,c,d,e,f,g},
{a,b,c},
{a,b,c,d,e,f,g},
{a,b,c,f,g}
 };
 
void setup() {
 pinMode(3,OUTPUT);
 pinMode(4,OUTPUT);
 pinMode(5,OUTPUT);
 pinMode(6,OUTPUT);
 pinMode(7,OUTPUT);
 pinMode(8,OUTPUT);
 pinMode(9,OUTPUT);
}
 
void loop() {
 for(int i=0;i<10;i++) {
 apaga();
numero(i);
delay(1000);
}
}
 
void apaga() {
digitalWrite(a,LOW);
 digitalWrite(b,LOW);
 digitalWrite(c,LOW);
 digitalWrite(d,LOW);
 digitalWrite(e,LOW);
 digitalWrite(f,LOW);
 digitalWrite(g,LOW);
}
 
 
void numero(int n) {
  for(int i=0;i<sizeof(num)/2;i++) digitalWrite(num[n][i],LOW);
}



Já com esse segundo código conseguimos um “efeito especial” como mostrado no vídeo logo depois do código fonte:

void setup() {
 pinMode(3,OUTPUT);
 pinMode(4,OUTPUT);
 pinMode(5,OUTPUT);
 pinMode(6,OUTPUT);
 pinMode(7,OUTPUT);
 pinMode(8,OUTPUT);
}
 
void loop() {
 digitalWrite(3,LOW);
 digitalWrite(4,LOW);
 digitalWrite(5,LOW);
 digitalWrite(6,LOW);
 digitalWrite(7,LOW);
 digitalWrite(8,LOW);
 digitalWrite(3,HIGH);
 delay(100);
 digitalWrite(3,LOW);
 digitalWrite(4,HIGH);
 delay(100);
 digitalWrite(4,LOW);
 digitalWrite(5,HIGH);
 delay(100);
 digitalWrite(5,LOW);
 digitalWrite(6,HIGH);
 delay(100);
 digitalWrite(6,LOW);
 digitalWrite(7,HIGH);
 delay(100);
 digitalWrite(7,LOW);
 digitalWrite(8,HIGH);
 delay(100);
}
← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário