电位器简介:
电位器属于无极性器件,可变电阻的一种,三个触点,通过旋转旋钮改变2号脚的位置,从而改变阻值的大小,1脚和3脚分别接开发板的5V和GND,2脚接模拟输入引脚。
电位器的使用
实验一:电位器数值读取
项目要求:
通过串口监视器(或串口绘图器)查看电位器输入的数值。
注意:电位器为模拟输入器件,对应的端口为:A0~A5。
电路搭建
参考程序
const int potPin=A0; //设置电位器模块的连接引脚为A0
void setup() {
Serial.begin(9600); //打开串口并设置串口的波特率
}
void loop() {
int potVal = analogRead(potPin); //从A0引脚读取模拟值
Serial.print("Value= ");
Serial.println(potVal); //将串口值输送到串口监视器
Serial.println(potVal,HEX); //将串口值以十六进制的方式输送到串口监视器
delay(100); //等待100毫秒
}
实验结果
若用串口监视器则可读取到:0~1024范围内的数值。
若用串口绘图器则可得到下图的现象(来回转动电位器)。
若将电位器拔下(模拟输入引脚悬空),则数据变化会像下图所示,呈现随机变化,这也就是为什么经常将一个空引脚做为随机函数的种子。
实验二:电位器控制LED的亮度
项目要求:
通过旋转电位器可以改变LED灯的亮度。
注意:电位器为模拟输入器件,对应的端口为:A0~A5。
电路搭建
参考程序
const int ldrPin = A0; //设置电位器模块的连接引脚为A0
const int ledPin = 6; //设置LED模块的连接引脚为6
void setup() {
Serial.begin(9600); //打开串口并设置串口的波特率
}
void loop() {
int potVal = analogRead(ldrPin); //从A0引脚读取模拟值
Serial.print("Value= ");
Serial.println(potVal); //将串口值输送到串口监视器
potVal = potVal / 4; //本语句将potVal的值的范围由0~1023转换为0~255
analogWrite(ledPin, potVal);
//向引脚6写入0~255之间的数值,引脚6根据模拟信号值,输出0V~5V之间的电压
delay(100); //延时0.1秒
}
实验结果
通过电位器可以控制LED的亮度,由于模拟输入的精度是10(1024),而模拟输出的精度是8(256),刚好相差4倍的关系,故可以直接除以4得到对映关系。当然也可以使用map函数和constrain函数来实现。