电位器简介:


  电位器属于无极性器件,可变电阻的一种,三个触点,通过旋转旋钮改变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函数来实现。
    在这里插入图片描述
    在这里插入图片描述