本实验将电位器连接到Arduino,通过映射函数来调节LED的亮度。

# 映射函数积木

映射函数: map()
描述:将数据从一个范围映射到另一个范围。
函数原型:map(value, fromLow, fromHigh, toLow, toHigh)
积木图标:

# 部署

  1. LED7接到OSEPP UNO的9号引脚。
  2. 电位器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
}
1
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时值是5125V时值是1023

  • PWM引脚

PWM引脚:通常以#号和*号标注开头的数字引脚,脉冲宽度调制,它是利用微处理器的数字输出来控制模拟电路的一种技术。输出等级为0~255

Arduino Uno有六个用于PWM的引脚 ( 数字引脚3,5、6、9、10、11)。

  • 应用解析

PWM的引脚输出等级为0-255A0输入的数值是0-1023。我们要把0-1023的数值映射到0-255来输出。
也可以通过改变映射关系来控制输入与输出的关系。比如我想电位器只拧到一半的时候LED达到最亮的值,那就把0-1023改成0-512。如果只想LED达到一半亮度,就可以把后面0-255改为0-128

# 操作视频