Como acionar um LED Bargraph com Arduino

Como acionar um LED Bargraph com Arduino

Um LED Bargraph (Barra de LEDs) consiste em um conjunto de LEDs dispostos sequencialmente em um invólucro retangular, geralmente utilizado como mostrador de nível para sensores analógicos. Os LEDs são acessíveis individualmente pormeio dos terminais do componente, e no geral precisaremos acrescentar resistores para limitação de corrente em cada LED, pois o bargraph não os possui internamente.

Podemos encontrar barras de LEDs em diversas cores e tamanhos, contendo quatro, seis, oito, dez ou mais LEDs em fila. Na figura a seguir temos uma unidade com dez LEDs:

LED Bargraph

Neste tutorial vamos mostrar como controlar um LED bargraph utilizando um potenciômetro, e o código pode ser facilmente ajustado para uso com quaisquer tipos de sensores conectados ao Arduino.

Lista de Materiais

  • Arduino (Uno, Mega, etc)
  • LED Bargraph de 10 LEDs
  • Potenciômetro de 1k
  • 10 resistores de 100 a 470 ohms
  • Matriz de contatos
  • Fios

Circuito esquemático

LED bargraph acionado por Arduino - Esquemático

Circuito montado: visão matriz de contatos

LED bargraph com Arduino - visão matriz de contatos

Código do sketch

A listagem abaixo traz o código empregado no projeto:

const int qtdeLEDs = 10;
const int pinosLEDs[] = {2,3,4,5,6,7,8,9,10,11};
const int pinoPotenc = 0;
int potenciometro = 0;
int bargraph = 0;
void setup() {
  for (int i=0; i<=qtdeLEDs; i++) {
    pinMode(pinosLEDs[i], OUTPUT);
  }
}
void loop() {
  potenciometro = analogRead(pinoPotenc);
  bargraph = map(potenciometro,0,1023,0,10);
  for (int i=0; i<qtdeLEDs; i++) {
    if (i < bargraph) {
      digitalWrite(pinosLEDs[i], HIGH);
    }
    else {
      digitalWrite(pinosLEDs[i],LOW);
    }
  }
}

Usamos uma constante de nome qtdeLEDs para armazenar a quantidade de LEDs que serão acionados (no caso, 10) e ujma constante pinoPotenc (inicializada com valor 0) para determinar qual pino analógico receberá o sinal vindo do potenciômetro para acionamento dos LEDs.
Uma outra constante, pinosLEDs[], é um array que irá armazenar os npumeros dos pinos onde cada LED individual do bargraph será conectado.

Também vamos declarar duas variáveis, potenciometro e bargraph, que serão utilizadas para armazenar o valor lido do pino central do potenciômetro e para armazenar esse mesmo valor mapeado no intervalo de 0 a 10, respectivamente.

Na função setup() ajustamos os pinos de ligação dos LEDs para atuarem como saídas (OUTPUT).

O programa principal, na função loop(), faz a leitura do valor analógico gerado no pino do potenciômetro, e armazena esse valor na vaiável potenciometro. Logo em seguida, o valor lido, no intervalo de 0 a 1023, é mapeado para o intervalo de 0 a 10 e armazenado na variável bargraph.
Usamos esse mapeamento para determinar quais LEDs devem permanecer acesos dependendo do nível de tensão lido.

Então, usando um laço for, varremos os pinos conectados aos LEDs, e levamos ao nivel alto (HIGH) os pinos cujos LEDs devem ser acesos. Para isso usamos uma variável contadora i, que irá contar de 0 até 10 (qtdeLEDs), e quando seu valor for menor do que o presente na variável bargraph, os pinos correspondentes são acionados, acendendo os LEDs. Caso contrário, os LEDs são apagados.

Circuito em ação

Veja o circuito em ação na animação a seguir:

Arduino

É isso aí pessoal! Tente modificar o circuito substituindo o potenciômetro por um sensor de luz ou de distância, por exemplo. No próximo tutorial vamos trabalhar com displays de LEDs de sete segmentos.

Até mais!

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

4 Comentários em Como acionar um LED Bargraph com Arduino

  1. Gabriel Henrique // 13/04/2019 em 23:20 // Responder

    obrigado por partilhar seu conhecimento,depois que eu sair do estágio posso contribuir financeiramente…

    abraços: Gabriel Henrique

    13/04/2019

  2. Boa tarde, obrigado pelo artigo!

    Uma correção…

    Nas duas ocorrências de:
    for (int i=0; i<=qtdeLEDs; i++)

    O correto seria:
    for (int i=0; i<qtdeLEDs; i++)

    Porque o último elemento é pinosLEDs[9], e não pinosLEDs[10].

    Abraço!
    Julio

Escreva um comentário

Seu e-mail não será divulgado


*