本实验将电位器连接到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-A7
Arduino的内置模数转换器(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 串口打印-滑块电位器值 →