Arduino - Gráfico de Barras LED

Este exemplo mostra como ler uma entrada analógica no pino 0 analógico, converter os valores de analogRead () em voltagem e imprimi-lo no monitor serial do Arduino Software (IDE).

Componentes necessários

Você precisará dos seguintes componentes -

  • 1 × breadboard
  • 1 × Arduino Uno R3
  • 1 × 5k ohm resistor variável (potenciômetro)
  • 2 × Jumper
  • 8 × LED ou você pode usar (exibição de gráfico de barras LED como mostrado na imagem abaixo)

Procedimento

Siga o diagrama de circuito e conecte os componentes na placa de ensaio, conforme mostrado na imagem abaixo.

Esboço

Abra o software Arduino IDE em seu computador. A codificação na linguagem Arduino controlará seu circuito. Abra um novo arquivo de esboço clicando em Novo.

Gráfico de barras de LED de 10 segmentos

Esses LEDs de gráfico de barras de 10 segmentos têm muitos usos. Com um tamanho compacto e conexão simples, são fáceis para protótipos ou produtos acabados. Essencialmente, são 10 LEDs azuis individuais alojados juntos, cada um com uma conexão de ânodo e cátodo individual.

Eles também estão disponíveis nas cores amarela, vermelha e verde.

Note- O pino desses gráficos de barras pode ser diferente do que está listado na folha de dados. Girar o dispositivo 180 graus corrigirá a alteração, tornando o pino 11 o primeiro pino da linha.

Código Arduino

/*
   LED bar graph
   Turns on a series of LEDs based on the value of an analog sensor. 
   This is a simple way to make a bar graph display. 
   Though this graph uses 8LEDs, you can use any number by
      changing the LED count and the pins in the array.
   This method can be used to control any series of digital
      outputs that depends on an analog input.
*/

// these constants won't change:
const int analogPin = A0; // the pin that the potentiometer is attached to
const int ledCount = 8; // the number of LEDs in the bar graph
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // an array of pin numbers to which LEDs are attached

void setup() {
   // loop over the pin array and set them all to output:
   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
      pinMode(ledPins[thisLed], OUTPUT);
   }
}

void loop() {
   // read the potentiometer:
   int sensorReading = analogRead(analogPin);
   // map the result to a range from 0 to the number of LEDs:
   int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
   // loop over the LED array:
   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
      // if the array element's index is less than ledLevel,
      // turn the pin for this element on:
      if (thisLed < ledLevel) {
         digitalWrite(ledPins[thisLed], HIGH);
      }else { // turn off all pins higher than the ledLevel:
         digitalWrite(ledPins[thisLed], LOW);
      }
   }
}

Código a ser anotado

O esboço funciona assim: primeiro, você lê a entrada. Você mapeia o valor de entrada para a faixa de saída, neste caso dez LEDs. Então você configura umfor-looppara iterar sobre as saídas. Se o número da saída na série for inferior ao intervalo de entrada mapeado, você o liga. Se não, você o desliga.

Resultado

Você verá o LED acender um a um quando o valor da leitura analógica aumentar e apagar um por um enquanto a leitura estiver diminuindo.