Arduino-LED 막대 그래프

이 예제는 아날로그 핀 0에서 아날로그 입력을 읽고 analogRead ()의 값을 전압으로 변환 한 다음 Arduino 소프트웨어 (IDE)의 직렬 모니터로 인쇄하는 방법을 보여줍니다.

필요한 구성 요소

다음 구성 요소가 필요합니다-

  • 1 × 브레드 보드
  • 1 × Arduino Uno R3
  • 1 × 5k ohm 가변 저항기 (전위차계)
  • 2 × 점퍼
  • 8 × LED 또는 사용 가능 (아래 이미지와 같이 LED 막대 그래프 표시)

순서

회로도를 따라 아래 그림과 같이 브레드 보드의 구성 요소를 연결합니다.

스케치

컴퓨터에서 Arduino IDE 소프트웨어를 엽니 다. Arduino 언어로 코딩하면 회로가 제어됩니다. 새로 만들기를 클릭하여 새 스케치 파일을 엽니 다.

10 세그먼트 LED 막대 그래프

이러한 10 세그먼트 막대 그래프 LED는 많은 용도로 사용됩니다. 풋 프린트가 작고 연결이 간단하여 프로토 타입 또는 완제품에 용이합니다. 기본적으로 이들은 각각 개별 양극 및 음극 연결이있는 10 개의 개별 파란색 LED가 함께 장착되어 있습니다.

노란색, 빨간색 및 녹색 색상으로도 제공됩니다.

Note−이 막대 그래프의 핀 배치는 데이터 시트에 나열된 것과 다를 수 있습니다. 장치를 180도 회전하면 변경 사항이 수정되어 11 번 핀이 첫 번째 핀이됩니다.

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

참고할 코드

스케치는 다음과 같이 작동합니다. 먼저 입력 내용을 읽습니다. 입력 값을 출력 범위 (이 경우 10 개의 LED)에 매핑합니다. 그런 다음for-loop출력을 반복합니다. 시리즈의 출력 번호가 매핑 된 입력 범위보다 낮 으면이를 켭니다. 그렇지 않으면 끄십시오.

결과

아날로그 판독 값이 증가하면 LED가 하나씩 켜지고 판독 값이 감소하는 동안 하나씩 꺼집니다.