Oh!Coder

Coding Life

好玩的Arduino-旋钮控制LED神灯

| Comments

Hi,大家好!在之前获取输入模拟信号的学习中,我们很早就是知道了如何使用旋转电位计。但在那一次的学习中,我们并没有进一步来完成控制LED神灯的亮度。今天呢,我们一方面复习之前的学习,另一方面完成用旋转电位计来控制LED神灯的亮度。

好!还是老规矩,先来看看这次我们需要哪些硬件吧!

硬件方面

arduino-switch-led-parts

图片来源:Arduino电路配件

具体包括如下:

  • Arduino UNO电路板(1块)
  • 旋转电位计(1个)
  • 面包板(1块)
  • 220Ω电阻(1个)
  • LED神灯(1盏)
  • 面包线(若干)

上面配件中,都是熟悉的面孔,不多说。

软件方面

Arduino官方提供的IDE

连接电路

arduino-switch-led

图片来源:Arduino电路连接

电路的连接也很清晰,不多说。

最后一步!

添加几行代码

首先,还是新建项目一个窗口。

arduino-ide-new

图片来源:Arduino官方IDE

向其中添加几行代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 定义旋转电位计模拟信号输入针脚号
const int analogInPin = A0;
// 定义LED神灯数字信号针脚号
const int analogOutPin = 9;
// 定义存储旋转电位计模拟信号数值
int sensorValue = 0;
// 控制LED神灯亮暗的模拟信号数值
int outputValue = 0;
// 对Arduino电路板或相关状态进行初始化方法
void setup() {
  // 开启串行通信,并设置其频率为9600。
  // 如果没有特别要求,此数值一般都为9600。
  Serial.begin(9600);
}
// 系统调用,无限循环方法
void loop() {
  // 读取旋转电位计的数值
  sensorValue = analogRead(analogInPin);
  // 转换电位计的数值范围,
  // 将0~1023数值范围映射到0~255
  outputValue = map(sensorValue, 0, 1023, 0, 255);
  // 将转换后的数值,应用给LED神灯,
  // 以此控制LED神灯的亮度。
  analogWrite(analogOutPin, outputValue);
  // 向串口调试窗口打印数值
  Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print("\t output = ");
  Serial.println(outputValue);
  // 延迟2毫秒,进入下一个loop循环。
  delay(2);
}

好!代码输入完毕!没有新内容,调用的方法也都是之前见用过的。

arduino-menu

图片来源:Arduino官方IDE的文件编辑菜单选项

点击上图中标有向右指向的箭头图标,将编写完成的代码烧入Arduino电路板。如果一切顺利,现在就可以通过控制旋转电位计来调控LED神灯的亮度啦!

如果想查看串口调试窗口里的输出信息,可以点击上图中最右侧的放大镜图标,即可查看实时输出信息。

arduino-switch-led-serial

图片来源:Arduino串口调试窗口

总结

这一次的试验,没有新内容,总的来说呢,是对之前所学的内容重新做了复习。这里需要特别注意的是map()方法,这个方法还是蛮常用到的。

下期预告

下一次,我们将介绍一个新的Arduino家族的成员给大家认识,会是谁呢?暂且保密!:P

Comments