📜  Arduino-LED条形图

📅  最后修改于: 2020-11-05 03:40:03             🧑  作者: Mango


本示例说明如何读取模拟引脚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则一一熄灭。