BarGraph

Çubuk grafik - bir ses ekranında gördüğünüz gibi bir hattaki bir dizi LED - analog sensörler için ortak bir donanım ekranıdır. Arka arkaya bir dizi LED , bir potansiyometre gibi bir analog giriş ve aradaki küçük bir koddan oluşur. Sen gibi, oldukça ucuza çoklu LED çubuk grafik görüntüler satın alabilirsiniz bu bir . Bu eğitici, bir dizi LED'in arka arkaya nasıl kontrol edileceğini gösterir, ancak herhangi bir dijital çıkış serisine uygulanabilir.

Bu eğitim Döngü ve Diziler öğreticisinin yanı sıra Analog Giriş öğreticisinden ödünç alır.

A bar graph display

Gerekli Donanım

  • Arduino veya Genuino Kurulu
  • LED çubuk grafik ekran veya 10 LED
  • Potansiyometre
  • 10 220 ohm direnç
  • bağlantı telleri
  • breadboard

Devre

büyütmek için resme tıklayın

Şematik:

büyütmek için resme tıklayın

Kod

Çizim şu şekilde çalışır: önce girişi okursunuz. Giriş değerini çıkış aralığına, bu durumda on LED'e eşlersiniz . Sonra çıkışları yinelemek için bir for döngüsü ayarladınız. Serideki çıkışın numarası, eşlenen giriş aralığından düşükse açarsınız. Değilse, kapatırsınız.


/*
  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 10
  LEDs, 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.

  The circuit:
  - LEDs from pins 2 through 11 to ground

  created 4 Sep 2010
  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/BarGraph
*/

// these constants won't change:
const int analogPin = A0;   // the pin that the potentiometer is attached to
const int ledCount = 10;    // the number of LEDs in the bar graph

int ledPins[] = {
  2, 3, 4, 5, 6, 7, 8, 9, 10, 11
};   // 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);
    }
    // turn off all pins higher than the ledLevel:
    else {
      digitalWrite(ledPins[thisLed], LOW);
    }
  }
}

See Also