Arduino项目04.Arduino LED条形图

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

必需的组件

你将需要以下组件:

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

程序

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

连接面包板
电路图

草图

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

Sketch

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-loop 以迭代输出。如果系列中的输出数量低于映射的输入范围,则将其打开。如果没有,则将其关闭。

结果

当模拟读数的值增加时,你将看到LED逐个打开,而当读数减少时,LED逐个关闭。

发布者:suiyublg,转转请注明出处:https://huibian.net/1404-2/

赞 (0)
suiyublg的头像suiyublg
上一篇 2017年4月14日 16:45
下一篇 2017年4月16日 16:48

相关推荐

  • Arduino项目07.Arduino 鼠标按钮控制

    使用鼠标库,你可以使用Arduino Leonardo,Micro或Due来控制计算机的屏幕光标。 这个特殊的例子使用五个按钮来移动屏幕上的光标。四个按钮是方向性的(上,下,左,右),一个是用于鼠标左键单击。来自Arduino的光标移动总是相对的。每次读取输入时,光标的位置都会相对于当前位置进行更新。 只要有一个方向按钮被按下,Arduino就会移动鼠标,在…

    2017年4月18日
    81500
  • Arduino教程11.Arduino 字符串

    字符串用于存储文本。它们可用在LCD或Arduino IDE串口监视器窗口中显示文本。字符串也可用于存储用户输入。例如,用户在连接到Arduino的键盘上键入的字符。 在Arduino编程中有两种类型的字符串: 在本章中,我们将学习Arduino草图中的字符串,对象和字符串的使用。在本章末尾,你将学习在草图中使用哪种类型的字符串。 字符串字符数组 我们要学习…

    2017年3月27日
    93500
  • Arduino教程21.Arduino If … else语句

    一个 if 语句后面可以跟随一个可选的else语句,当表达式为false时执行。 if … else语句语法 if (expression) { Block of statements; } else { Block of statements; } if … else语句 – 执行顺序 例子 /* G…

    2017年3月24日
    60600
  • Arduino声音02.Arduino 无线通信

    无线发射器和接收器模块工作在315 Mhz。它们可以轻松地装入面包板,并可很好的与微控制器配合使用,创建一个非常简单的无线数据链路。使用一对发射器和接收器,模块将只能单向传输数据,因此,你将需要两对(不同频率)作为发射器/接收器对。 注意 – 这些模块是任意的,并会接收相当大量的噪音。发射器和接收器都在共同的频率下工作,并且没有ID。 …

    2017年4月30日
    1.3K00
  • Arduino项目06.Arduino 键盘消息

    在此示例中,当按下按钮时,文本字符串作为键盘输入发送到计算机。字符串报告按钮被按下的次数。一旦你完成了Leonardo版的程序化和接线,打开你最喜欢的文本编辑器来查看结果。 警告 – 当你使用 Keyboard.print()命令时,Arduino将接管你的计算机键盘。为确保在使用此功能运行草图时不会失去对计算机的控制,请在调…

    2017年4月17日
    84700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
欢迎大家来到大雄学编程!