Arduino - LED 条形图

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

所需组件

您将需要以下组件 −

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

步骤

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

条形面包板

连接到条形面包板

草图

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

Sketch

10 段 LED 条形图

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 则一个接一个地熄灭。