线性电位器是一个模拟量的电子元器件,模拟量和数字量有什么区别呢?简单的说,数字量只有0和1两种状态,对应的就是开和关,高电平和低电平。而模拟量则不一样,他的数据状态呈现线性状态例如1到1000。
本次试验我们采用电位器对LED调光,用电位器调光的话能够比较连贯柔和。
一、电路连接
将电位器接入了arduino控制板的A0模拟量检测口,arduino的模拟接口能够测量0-5V的电压,对应的返回值为0-1024。LED灯模块接10脚。
二、程序代码
/*
作用:通过线性电位器控制led亮度
*/
int ledPin = 10; // LED连接到数字引脚9
int analogPin = 0; //电位器连接到模拟引脚3
int val = 0; //定义变量存以储读值
void setup()
{
pinMode (ledPin,OUTPUT); //设置引脚为输出引脚
}
void loop()
{
val = analogRead (analogPin); //从输入引脚读取数值
analogWrite(ledPin,val / 4); // 以val / 4的数值点亮LED(因为analogRead读取的数值从0到1023,而analogWrite输出的数值从0到255)
}
三、程序所用语法
1.analogRead()
从指定的模拟引脚读取数据值。该命令可将0至5伏特之间的输入电压映射到0至1023之间的整数值,从而产生电压与读数之间的关系,即该命令读取的数值范围在0~1023之间。
语法:
analogRead(PIN)
参数
PIN:输入数值的引脚
程序返回
从0到1023的整数值
2.analogWrite()
从一个引脚输出模拟值(PWM)。可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。PWM信号的频率大约是490赫兹。
语法
analogWrite(pin,value)
参数
pin:用于输出数值的引脚。
value:占空比:0(完全关闭)到255(完全打开)之间。
任务拓展
一、设计一个声控灯
1.功能:利用话筒模块控制灯的亮和灭,实现拍手时,灯亮,持续5s钟后灯灭。
2.硬件连接
在上例的基础上,将电位器模块更换为话筒模块,其余不变。
3.程序设计
int val; //定义变量存以储读值
int ledPin = 10; // LED连接到数字引脚10
int analogPin = 0; //话筒模块连接到模拟引脚A0
void setup()
{
pinMode (ledPin,OUTPUT); //设置引脚为输出引脚
}
void loop()
{
val = analogRead (analogPin); //从输入引脚读取数值,以val / 4的数值点亮LED(因为analogRead读取的数值从0到1023,而analogWrite输出的数值从0到255)
val=val/4; //将从analogPin引脚读取到的0-1023的值转换为0-255
if(val>200) //如果读取的数值大于200,则执行{ }内的语句,此处设置声音的灵敏度
{
digitalWrite(ledPin,HIGH); //点亮LED灯,持续5S后熄灭。
delay(5000);
digitalWrite(ledPin,LOW);
}
}
总结,不同环境下,对声音的灵敏度要求不一样,安静的环境,声音灵敏度可设置得较高一点(if后的数值可设置得较小一点),嘈杂得环境,灵敏度可设置较低一点,避免环境声音对灯的影响。
二、思考
1.将话筒模块更换为光敏模块,如何修改程序实现功能。
2.将话筒模块更换为温度传感器模块,如何修改程序实现功能。