资讯详情

Arduino基础入门之六 电位器控制灯的亮度

一 硬件

电位器有三个接头,两端有五个接头V和GND,在中间端接一个模拟引脚,实际上电位器是一个可变电阻元件,旋转电位器旋钮,改变输出电压的值。

二 代码

功能:旋转电位器LED代码如下:

///旋转电位器,控制LED的亮度,从串口检查读取的模拟值 const int analogInPin = A0; // 模拟输入引脚 const int analogOutPin = 9; //接LED正极  PWM输出引脚  int sensorValue = 0; // 电位器电压值 int outputValue = 0; // 模拟输出值(PWM)  void setup() {   //pinMode(analogOUTPin,OUTPUT);//省略这句话,后续analogWrite()仍然有效   Serial.begin(9600); ///初始串口波特率为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伏特信号对应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/

标签: 电位器调到零5komcontelec电位器503顶调多圈电阻器电位器跟可变电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台