线性电位器是一个模拟量的电子元器件,模拟量和数字量有什么区别呢?简单的说,数字量只有0和1两种状态,对应的就是开和关,高电平和低电平。而模拟量则不一样,他的数据状态呈现线性状态例如1到1000。
    本次试验我们采用电位器对LED调光,用电位器调光的话能够比较连贯柔和。
    一、电路连接
    将电位器接入了arduino控制板的A0模拟量检测口,arduino的模拟接口能够测量0-5V的电压,对应的返回值为0-1024。LED灯模块接10脚。
    二、程序代码

    1. /*
    2. 作用:通过线性电位器控制led亮度
    3. */
    4. int ledPin = 10; // LED连接到数字引脚9
    5. int analogPin = 0; //电位器连接到模拟引脚3
    6. int val = 0; //定义变量存以储读值
    7. void setup()
    8. {
    9. pinMode (ledPin,OUTPUT); //设置引脚为输出引脚
    10. }
    11. void loop()
    12. {
    13. val = analogRead (analogPin); //从输入引脚读取数值
    14. analogWrite(ledPin,val / 4); // 以val / 4的数值点亮LED(因为analogRead读取的数值从0到1023,而analogWrite输出的数值从0到255)
    15. }

    三、程序所用语法
    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.将话筒模块更换为温度传感器模块,如何修改程序实现功能。