一 硬件
电位器有三个接头,两端有五个接头V和GND,在中间端接一个模拟引脚,实际上电位器是一个可变电阻元件,旋转电位器旋钮,改变输出电压的值。
二 代码
功能:旋转电位器LED代码如下:
///旋转电位器,控制LED从串口检查读取的模拟值const int analogInPin = A0. / 模拟输入引脚const int analogOutPin = 9; //接LED正极 PWM输出引脚int sensorValue = int outputValue = 0(PWM)void setup()pinMode(analogOUTPin,OUTPUT);//省略这句话,后续analogWrite()依然有效 Serial.begin(9600)void loop(){ sensorValue = analogRead(analogInPin); /outputValue = map(sensorValue,0、1023、0、255)analogWrite(analogOutPin,outputValue); // 输出对应PWM值,控制LED的亮度 Serial.print("sensor = "); Serial.print(sensorValue); Serial.print("\t output = ");// \t 意味着跳到下一个TAB位置 Serial.println(outputValue); delay(2) //延迟2毫秒}
1)直接模拟口读值可以。模拟量不需要设置引脚模式,pinMode只用于数字引脚。
2)int value=读取的值value不是电压值,而是0和1023之间的整数值(意味着0和工作电压(5)V或3.3V)它们之间的电压值映射为0和1023之间的整数值)。例如,我这次连接了5V,然后5伏特分为10245 volts / 1024 units or,0.0049 volts (4.9 mV) per unit】#,0伏特的信号对应值,5伏特信号对应1023。
3)读取的模拟值用于控制灯的亮度,结合前面PWM将读取值转换为0的知识~255,用函数,功能是数一个数value从一个范围(fromLow~ fromHigh)映射到另外一个范围(toLow ~ toHigh )。
所以使用这个函数实际上可以反映读取的真实电压。
4) PWM在这种情况下,不需要设置LED正极引脚接口为OUTPUT模式,这个挺让我吃惊的,但是过了LED还是亮的,估计是因为后续是模拟输出analogWrite(),所以不需要。
#https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/