Hoje vou falar de outro display bastante comum utilizado nos mais variados projetos, mostrando como usar um display 7 segmentos com Arduino, como esse da imagem abaixo:
O display de 7 segmentos, como o próprio nome diz, tem 7 partes, ou segmentos geralmente construidos com tecnologia LED, que podem ser agrupados de modo a formar números e letras.
Os segmentos são organizados de A a F:
Assim, se você quiser mostrar o número 1, basta ativar os segmentos B e C. Para mostrar o número 3, os segmentos A, B, C, D e G, e assim por diante.
Conexão Display 7 segmentos com Arduino
A ligação ao Arduino Uno que vamos usar será com os pinos digitais de 2 a 9, mais o GND, na seguinte sequência:
Pino Arduino | Pino Display |
2 | Pino Segmento A |
3 | Pino Segmento B |
4 | Pino Segmento C |
5 | Pino Segmento D |
6 | Pino Segmento E |
7 | Pino Segmento F |
8 | Pino Segmento g |
9 | Pino Segmento PONTO |
GND | Pino 3 do Display (GND) |
Um ponto importante é a utilização dos resistores de 220 ohms para cada pino. Como o display trabalha com 2V é necessário limitar a corrente, evitando queimar o componente:
Para o modelo de display que estou utilizando (FJ5101AH, catodo comum), a disposição dos pinos é mostrada na próxima imagem. Se o seu display for de outro modelo, basta descobrir qual pino corresponde a cada segmento.
Isso pode ser feito utilizando-se um multimetro ou até mesmo uma pilha, tomando o cuidado de respeitar a voltagem máxima que comentei acima: 2 volts.
Programa Contador crescente
Finalmente o programa, baseado no código desenvolvido pelo site hacktronics. Fiz algumas alterações no mesmo, para que o display mostre não só os números de 0 a 9, mas também as letras de A a F, em ordem crescente:
// Programa: Contador crescente 0 a F // Modificacoes e comentarios: Arduino e Cia // Baseado no programa: // Arduino 7 segment display example software // http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html // License: http://www.opensource.org/licenses/mit-license.php (Go crazy) // Define a ordem de ligação dos segmentos, dos digitos 0 a F // Este padrão é para display de catodo comum // Para display de anodo comum, modifique os valores de 0 para 1 e // de 1 para 0 // 1 = LED ligado, 0 = LED desligado, nessa ordem : // Arduino pinos: 2,3,4,5,6,7,8 byte seven_seg_digits[16][7] = { { 1,1,1,1,1,1,0 }, // = Digito 0 { 0,1,1,0,0,0,0 }, // = Digito 1 { 1,1,0,1,1,0,1 }, // = Digito 2 { 1,1,1,1,0,0,1 }, // = Digito 3 { 0,1,1,0,0,1,1 }, // = Digito 4 { 1,0,1,1,0,1,1 }, // = Digito 5 { 1,0,1,1,1,1,1 }, // = Digito 6 { 1,1,1,0,0,0,0 }, // = Digito 7 { 1,1,1,1,1,1,1 }, // = Digito 8 { 1,1,1,0,0,1,1 }, // = Digito 9 { 1,1,1,0,1,1,1 }, // = Digito A { 0,0,1,1,1,1,1 }, // = Digito B { 1,0,0,1,1,1,0 }, // = Digito C { 0,1,1,1,1,0,1 }, // = Digito D { 1,0,0,1,1,1,1 }, // = Digito E { 1,0,0,0,1,1,1 } // = Digito F }; void setup() { pinMode(2, OUTPUT); //Pino 2 do Arduino ligado ao segmento A pinMode(3, OUTPUT); //Pino 3 do Arduino ligado ao segmento B pinMode(4, OUTPUT); //Pino 4 do Arduino ligado ao segmento C pinMode(5, OUTPUT); //Pino 5 do Arduino ligado ao segmento D pinMode(6, OUTPUT); //Pino 6 do Arduino ligado ao segmento E pinMode(7, OUTPUT); //Pino 7 do Arduino ligado ao segmento F pinMode(8, OUTPUT); //Pino 8 do Arduino ligado ao segmento G pinMode(9, OUTPUT); //Pino 9 do Arduino ligado ao segmento PONTO writePonto(0); // Inicia com o ponto desligado } void writePonto(byte dot) //Funcao que aciona o ponto no display { digitalWrite(9, dot); } void sevenSegWrite(byte digit) //Funcao que aciona o display { byte pin = 2; //Percorre o array ligando os segmentos correspondentes ao digito for (byte segCount = 0; segCount < 7; ++segCount) { digitalWrite(pin, seven_seg_digits[digit][segCount]); ++pin; } writePonto(1); //Liga o ponto delay(100); //Aguarda 100 milisegundos writePonto(0); //Desliga o ponto } void loop() { //Contador de 0 a 15, ligando os segmentos correspondentes //0 a 9 = liga os segmentos correspondentes aos numeros //10 a 15 = Forma as letras A,B,C,D,E,F for (byte count = 0; count < 16; count++) { delay(500); sevenSegWrite(count); } delay(4000); }
Não encontrei o datasheet específico desse display FJ5101AH.Procurando modelos similares, encontrei as informações abaixo, que podem ser utilizadas como base:
No próximo artigo vou usar esse mesmo display de 7 segmentos com o Arduino, mas gerenciado por um circuito integrado específico para trabalhar com displays: o Max7219.
Atualizado: Controlando display 7 segmentos com o Max7219
Atualizado: Ligando 2 displays 7 segmentos ao Max7219
Gostou? Confira outros posts usando displays 7 segmentos aqui mesmo no Arduino e Cia!