广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Arduino光控开关

    来源:网络收集  点击:  时间:2024-03-19
    【导读】:
    楼宇中的感应灯,在白天的时候不论是否有声音都不会开启;街道的路灯在黑天的时候会自动开启,这些是由于电路中有感光元件在发挥作用,这里我们就做一个光敏电阻和Arduino的互动实验。工具/原料moreArduino实验套装(Arduino UNO控制器,跳线,面包板,USB数据线)光敏电阻 * 1个5mm LED 发光二极管 * 1个470欧姆电阻 * 1个10K 电阻 * 1个方法/步骤1/8分步阅读

    准备实验需要用到的硬件,如图所示:

    2/8

    按照下图中的电路,进行实验硬件的连接

    3/8

    将下列程序复制到Arduino IDE中,如下图所示:

    int photoresistancePin = 5; //定义变量photoresistance=5,为电压读取端口。

    int ledPin = 11; //设置led数字IO脚

    int val = 0; //定义变量i

    void setup() {

    pinMode(ledPin, OUTPUT); //设置ledPin脚模式,为输出

    }

    void loop() {

    val = analogRead(photoresistancePin); //从传感器读取值

    if(val=512)

    {

    /*512=2.5V,想让传感器敏感一些的时候,把数值调高,

    想让传感器迟钝的时候把数值调低。*/

    digitalWrite(ledPin, LOW);//当光照强度过强时led灭。

    }

    else

    {

    digitalWrite(ledPin, HIGH); //当光照强度过低时led亮。

    }

    }

    4/8

    使用USB数据线连接Arduino UNO 控制器和电脑,选择正确的板型(Arduino UNO 和)、端口,点击上传,无误情况下软件会显示如下结果。

    5/8

    硬件回顾:光敏电阻

    光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M 欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm 的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化。

    光敏电阻外形如图所示:

    6/8

    实验效果:在白天的情况下,当遮挡光敏电阻时,LED点亮,不遮挡光敏电阻时,LED熄灭,如下图所示,光敏电阻没有被盖住的时候LED熄灭,当光敏电阻被遮盖住,LED会点亮。(其中可以改变 if(val=512) 语句中的判断值来改变光敏电阻的灵敏度)

    7/8

    扩展实验,使用光敏电阻同样可以达到类似电位计调节LED亮度的效果,如实验电位计控制LED亮度:http://jingyan.baidu.com/article/49711c61785102fa441b7c81.html,只需要将代码修改如下为所示代码,并正确上传执行即可,上传无误,编译器如下图所示。

    #define LED 11 //定义LED引脚为10

    int val = 0; //储存传感器的变量数值

    void setup(){

    pinMode(LED, OUTPUT); //设定LED引脚为输出状态

    //注意:模拟接口自动设为输入

    }

    void loop(){

    val = analogRead(5); //读取传感器的模拟值并储存

    analogWrite(LED,val/4); //设置LED亮度(PWM输出范围0-255)

    delay(10); //延时10毫秒

    }

    代码说明:程序中,val = analogRead(5);这个语句是读取模拟端口A5的值,不是数字端口5,模拟接口默认为输入端口,不用再写语句。analogWrite(LED,val/4);这个语句是设置LED亮度,val/4是因为val读取出来的值范围是0~1023,而上面介绍过PWM范围是0~255,所以要将val的值除以4。

    8/8

    扩展实验效果:有遮挡时,LED亮度变亮,无遮挡时,LED亮度变暗,光线强烈时,LED会熄灭(有可能只是肉眼看不到LED的亮度了)!下图所示,为光敏电阻被遮挡,LED显示最高亮度。

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_358616.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 18:49:49  耗时:0.027
    0.0274s