Arduino - LED 条形图


此示例向您展示如何读取模拟引脚 0 处的模拟输入,将analogRead() 中的值转换为电压,并将其打印到 Arduino 软件 (IDE) 的串行监视器。

所需组件

您将需要以下组件 -

  • 1 × 面包板
  • 1 × Arduino Uno R3
  • 1×5k欧姆可变电阻(电位器)
  • 2 × 跳线
  • 8×LED也可以使用(LED条形图显示如下图所示)

程序

按照电路图并将组件连接到面包板上,如下图所示。

酒吧面包板

连接到酒吧面包板

草图

在计算机上打开 Arduino IDE 软件。使用 Arduino 语言进行编码将控制您的电路。单击“新建”打开一个新的草图文件。

草图

10 段 LED 条形图

LED条形图

这些 10 段条形图 LED 有多种用途。它们占地面积紧凑,连接简单,很容易用于原型或成品。本质上,它们是 10 个独立的蓝色 LED,它们安装在一起,每个都有单独的阳极和阴极连接。

它们还有黄色、红色和绿色可供选择。

- 这些条形图上的引脚排列可能与数据表中列出的有所不同。将设备旋转 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);
      }
   }
} 

注意事项代码

该草图的工作原理如下:首先,您读取输入。您将输入值映射到输出范围,在本例中为十个 LED。然后设置一个for 循环来迭代输出。如果系列中的输出编号低于映射的输入范围,则将其打开。如果没有,你就把它关掉。

结果

当模拟读数值增加时,您会看到 LED 一一亮起,而当读数减少时,LED 一一熄灭。