本实验将电位器连接到Arduino,通过映射函数来调节LED的亮度。
# 映射函数积木
映射函数: map()
描述:将数据从一个范围映射到另一个范围。
函数原型:map(value, fromLow, fromHigh, toLow, toHigh)
积木图标:

# 部署
- 把
LED7接到OSEPP UNO的9号引脚。 - 电位器
POT1接到OSEPP UNO的A0号引脚。

# 程序搭建
- oseppBlock 积木知识

电位器积木,定义名称和连接引脚。
电位器是模拟输入器件,只连接在A0-A7引脚。

电位器读取数值积木,输出数值在0~1023之间。
oseppBlock程序

Arduino程序
void setup()
{
//potentiometer1
pinMode(A0, INPUT); //定义A0引脚为输入模式
//led1
pinMode(9, OUTPUT); //9
}
void loop()
{
digitalWrite(9, map(analogRead(A0), 0, 1023, 0, 255)); //把A0的值0-1023映射到0-255
}
2
3
4
5
6
7
8
9
10
11
12
# 运行结果
转动电位器,LED的亮度也会随之变化。电位器往左旋转,此时LED由亮到暗,往右旋转,LED由暗到亮。
# 解析
- 模拟引脚
模拟引脚:
A0-A7Arduino的内置模数转换器(ADC),A0-A7引脚中的模拟量可以报告0-1023之间的值,该值映射到0伏至VCC(电源正极电压),也就是5V的范围。A0-A7可以将采集到的0-5V表示为0-1023的数值,交由程序来处理。
函数 analogRead()
analogRead(pin) 用于读取模拟引脚A0-A7的模拟量的电压值,参数pin表示要获取模拟量电压值的引脚,该函数返回值为0-1023之间的一个整数。
0V时值是0, 2.5V时值是512,5V时值是1023。
- PWM引脚
PWM引脚:通常以#号和*号标注开头的数字引脚,脉冲宽度调制,它是利用微处理器的数字输出来控制模拟电路的一种技术。输出等级为
0~255。
Arduino Uno有六个用于PWM的引脚 ( 数字引脚3,5、6、9、10、11)。
- 应用解析
PWM的引脚输出等级为0-255,A0输入的数值是0-1023。我们要把0-1023的数值映射到0-255来输出。
也可以通过改变映射关系来控制输入与输出的关系。比如我想电位器只拧到一半的时候LED达到最亮的值,那就把0-1023改成0-512。如果只想LED达到一半亮度,就可以把后面0-255改为0-128。
# 操作视频
← 电位器-调节LED 串口打印-滑块电位器值 →