锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2023-05-06 05:07:00 亮度传感器arduino

一 硬件

电位器有三个接头,两端有五个接头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)直接模拟口读值analogRead(analogInPin)可以。模拟量不需要设置引脚模式,pinMode只用于数字引脚。

2)int value=analogRead(analogInPin)读取的值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,用函数map(value,fromLow,fromHigh,toLow,toHigh),功能是数一个数value从一个范围(fromLow~ fromHigh)映射到另外一个范围(toLow ~ toHigh )。

所以使用这个函数实际上可以反映读取的真实电压。

4) PWM在这种情况下,不需要设置LED正极引脚接口为OUTPUT模式,这个挺让我吃惊的,但是过了LED还是亮的,估计是因为后续是模拟输出analogWrite(),所以不需要。

#https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/

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

相关文章