Bóson Treinamentos em Ciência e Tecnologia

Como usar um display de LED de sete segmentos com Arduino

Usando display de LED de 7 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 extra 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:

 

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
};

// Array de configuração dos 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() {
 // Configurar 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 números em sequência a cada 0,5 segundo (500ms):
 for (int i = 0; i <=10; i++) {
   mostraNumero(i);
   delay(500);
 }
}
// Função mostraNumero, que acende os LEDs correspondentes para exibir os números:
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++;
   }
}

Funcionamento do Código

Matriz de Bits

A primeira parte do código é uma matriz chamada numero. Essa matriz é usada para representar os números de 0 a 9 e um ponto decimal (usando o último elemento da matriz). A matriz é uma matriz bidimensional com 11 linhas e 8 colunas, na qual cada linha representa um dígito (0 a 9 e o ponto decimal, com 8 bits), e cada coluna representa um segmento do display de 7 segmentos.

Sendo assim, cada elemento da matriz (numero[i][j]) é um valor binário (0 ou 1) que determina se um determinado segmento do display deve estar aceso (1) ou apagado (0) para exibir o número correspondente.

Configuração dos Pinos

Na sequência temos a configuração dos pinos digitais associados a cada segmento do display de 7 segmentos, usando um array de números. Os pinos serão configurados como saída usando a função pinMode na função setup().

Função setup()

Dentro da função setup(), todos os pinos digitais associados aos segmentos são configurados como saída, para que seja possível controlá-los.

Função loop()

A função loop() é onde o programa principal é executado continuamente. Nesse caso, ele exibe os números de 0 a 9 e o ponto decimal em sequência a cada 500 milissegundos (0,5 segundos). Isso é feito chamando a função mostraNumero(i) em um loop for que varia de 0 a 10.

Função mostraNumero(int valor)

Esta função recebe um valor inteiro que representa o número que você deseja exibir. O valor é usado como índice para acessar a matriz numero e determinar quais segmentos do display de 7 segmentos devem ser acesos ou apagados para exibir o número correspondente.

O loop for dentro da função mostraNumero percorre cada coluna da matriz numero (cada segmento do display) e usa a função digitalWrite para definir o estado (ligado ou desligado) de cada segmento com base nos valores na matriz numero.

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):

Arduino

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é!

 

Sair da versão mobile