Arduino - LED 条形图
此示例向您展示如何读取模拟引脚 0 处的模拟输入,将 analogRead() 中的值转换为电压,并将其打印到 Arduino 软件 (IDE) 的串行监视器。
所需组件
您将需要以下组件 −
- 1 × 面包板
- 1 × Arduino Uno R3
- 1 × 5k 欧姆可变电阻器(电位器)
- 2 × 跳线
- 8 × LED 或您可以使用(如下图所示的 LED 条形图显示)
步骤
按照电路图并连接面包板上的组件,如下图所示。
草图
在您的计算机上打开 Arduino IDE 软件。使用 Arduino 语言进行编码将控制您的电路。单击"新建"打开新的草图文件。
10 段 LED 条形图
这些 10 段条形图 LED 用途广泛。体积小巧,连接简单,易于用于原型或成品。本质上,它们是 10 个独立的蓝色 LED 组合在一起,每个都有独立的阳极和阴极连接。
它们也有黄色、红色和绿色可供选择。
注意 − 这些条形图上的引脚排列可能与数据表上列出的不同。将设备旋转 180 度将纠正更改,使引脚 11 成为第一根引脚。
Arduino 代码
/* LED 条形图 根据模拟传感器的值打开一系列 LED。 这是一种制作条形图显示的简单方法。 虽然此图使用了 8 个 LED,但您可以通过更改 LED 数量和数组中的引脚来使用任意数量。 此方法可用于控制任何依赖于模拟输入的数字输出系列。 */ // 这些常量不会改变: const int analogPin = A0; // 电位器连接的引脚 const int ledCount = 8; // 条形图中的 LED 数量 int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // 连接 LED 的引脚号数组 void setup() { // 循环遍历引脚数组并将它们全部设置为输出: for (int thisLed = 0; thisLed < ledCount; thisLed++) { pinMode(ledPins[thisLed], OUTPUT); } } void loop() { // 读取电位器: int sensorReading = analogRead(analogPin); // 将结果映射到从 0 到 LED 数量的范围: int ledLevel = map(sensorReading, 0, 1023, 0, ledCount); // 循环遍历 LED 数组: for (int thisLed = 0; thisLed < ledCount; thisLed++) { // 如果数组元素的索引小于 ledLevel, // 打开此元素的引脚: if (thisLed < ledLevel) { digitalWrite(ledPins[thisLed], HIGH); }else { // 关闭所有高于 ledLevel 的引脚: digitalWrite(ledPins[thisLed], LOW); } } }
需要注意的代码
该草图的工作原理如下:首先,读取输入。将输入值映射到输出范围,在本例中为 10 个 LED。然后设置一个 for 循环 来迭代输出。如果系列中的输出数量低于映射的输入范围,则将其打开。如果不是,则将其关闭。
结果
当模拟读数增加时,您将看到 LED 一个接一个地亮起,而当读数减少时,LED 则一个接一个地熄灭。