Como usar um display de LED de sete segmentos com Arduino
Usando um display de LED de sete segmentos com Arduino
Um display de LEDs é um componente utilizado para exibir informação em um painel por meio do emprego de múltiplos segmentos de LEDs que emitem luz, acionados por tensões entre 2 e 5VCC geralmente.
Esse tipo de display pode exibir caracteres alfanuméricos, apenas números, ou ainda símbolos, além de formas geométricas e pontos em alguns modelos.
O tipo de display de LED mais simples é o Display de Sete Segmentos que, como o próprio nome diz, é composto por sete segmentos (LEDs) que podem ser acionados individualmente; geralmente, há também um oitavo segmento, que aciona um LED para representação de um ponto decimal.
A figura a seguir mostra um display de sete segmentos típico, que possui também um LED para representar o ponto decimal:

Figura 01 - Display de LED de Sete Segmentos
Neste tutorial vou mostrar como acionar um display de 7 segmentos típico, criando um contador numérico de 0 a 9, usando o Arduino.
Diagrama esquemático
Na figura a seguir temos o diagrama esquemático do circuito que vamos utilizar:
Lista de componentes
Precisaremos dos seguintes componentes para elaborar o circuito:
- 1 Arduino Uno (ou Mega)
- 8 Resistores de 220Ω
- 1 Display de LED de sete segmentos, catodo comum (pode ser utilizado anodo comum, porém deverão ser feitas alterações simples no circuito e no código)
- Matriz de contatos
- Fios (jumpers) diversos.
Código do sketch
Abaixo temos o código do programa que será executado neste circuito:
// Matriz de bits para representar os números de 0 a 9: int numero[11][8] = { // 11 linhas, 8 colunas { 1,1,1,1,1,1,0,0 }, //0 { 0,1,1,0,0,0,0,0 }, //1 { 1,1,0,1,1,0,1,0 }, //2 { 1,1,1,1,0,0,1,0 }, //3 { 0,1,1,0,0,1,1,0 }, //4 { 1,0,1,1,0,1,1,0 }, //5 { 0,0,1,1,1,1,1,0 }, //6 { 1,1,1,0,0,0,0,0 }, //7 { 1,1,1,1,1,1,1,0 }, //8 { 1,1,1,0,0,1,1,0 }, //9 { 0,0,0,0,0,0,0,1 } //ponto decimal }; // Configurar os pinos digitais associados a cada segmento: const int segmentos[8] = { 2,3,4,5,6,7,8,9 }; // 2 = segmento a // 3 = segmento b // 4 = segmento c // 5 = segmento d // 6 = segmento e // 7 = segmento f // 8 = segmento g // 9 = ponto decimal void setup() { // Configurando os pinos de cada segmento para saída: for (int i = 0; i <= 7; i++) { pinMode(segmentos[i], OUTPUT); } } void loop() { // Displays de catodo comum: acendem com valor 1 nos pinos digitais // chamar função mostraNumero, que exibe os numeros em sequência a cada 1 segundo: for (int i = 0; i <=10; i++) { mostraNumero(i); delay(500); } } // Implementando a função mostraNumero, que exibe os numeros em sequência a cada 1 segundo: void mostraNumero(int valor) { // valor é a linha (número a mostrar) int pino = 2; // começar contagem no pino 2 for (int i = 0; i < 8; i++) { digitalWrite(pino, numero[valor][i]); // fixa na linha e aciona os bits de cada coluna (0 ou 1) pino++; } } |
Visualização
Veja o circuito montado em ação, realizando a contagem de números de 0 a 9 (e o ponto decimal também):
Se preferir, assista a um vídeo que mostra os procedimentos descritos em ação:
É isso aí! Nos próximos tutoriais vamos explorar mais a fundo o uso de displays de sete segmentos, incluindo displays de dois ou mais dígitos, e também o uso de bibliotecas do Arduino para esse componente.
Até!
Olá, preciso de uma dica para a programação do Java em comando ao arduino para acender led
Olá Moraes!
Você quer acionar um LED usando uma aplicação escrita em Java? Acho que isso pode te ajudar:
https://odelotstuff.wordpress.com/2013/12/20/6-controlar-arduino-por-um-programa-externo-app-java-conversando-via-porta-serial/
Se conseguir poste aqui!
Abraço!
Óla, gostaria de saber como faço para inverter a contagem do display de 9 para 0. a alteração deve ser feita no void loop?
Sim, você deve inverter a contagem no laço for, começando no valor maior e terminando em zero.
VOCE É O CARA! ou MeLhor VOCE É O MÁXIMO !
Obrigado Maurício!
Show! Excelente trabalho e linguagem de fácil acesso a todos.
Obrigado Tiago!
Ola
como posso visualizar valores do potenciometro em 4 displays 7 seg individuais auxiliado pelo CI multiplexador MAX 7219
Isso é um pouco mais complexo Adilson, e vou escrever um artigo a respeito em breve. Abraço!