查看: 8846|回复: 12

[教程] 光敏电阻检测环境光实验

[复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2018-3-5 21:22 | 显示全部楼层 |阅读模式
    本文节选自《Arduino程序设计基础》

    一些简单的电子元件就可以做传感器使用,例如我们这里要用到的光敏电阻。

    22222.png
    一种电阻值随照射光强度增加而下降的电阻。

    光敏电阻的使用方法很简单,将其作为一个电阻接入电路中,然后使用analogRead() 读取电压即可。这里我们将光敏电阻和一个普通电阻串联(如图2-42),根据串联分压的方法来读取到光敏电阻上的电压。
    33333.jpg


    实验所需材料
    Arduino Uno、面包板、光敏电阻、1KΩ电阻1个

    连接示意图
    444444.png
    图 2 41 光敏电阻实验连接示意图

    原理图
    555555.jpg
    图 2 42 光敏电阻实验原理图

    如图2-41和图2-42所示,我们通过模拟输入口A0读取分压后得到的电压。
    完整实现代码如下:

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    光敏电阻检测环境光
    http://www.arduino.cn/
    */
    
    void setup()
    {
      // 初始化串口
      Serial.begin(9600);
    }
    void loop() 
    {
    // 读出当前光线强度,并输出到串口显示
      int sensorValue = analogRead(A0);
      Serial.println(sensorValue);
      delay(1000);
    }


    运行以上程序,打开串口监视器,你能看到如图2-43所示的输出信息,Arduino通过串口输出了当前从光敏电路读到的模拟值。
    66666.png


    程序中使用到了Serial.begin()、Serial.println() 语句,他们的作用分别是初始化串口及串口输出数据,在此后的章节中我们将进行深入的讲解。
    如果你需要知道当前环境下光敏电阻的阻值,可以使用以下公式计算:
    QQ截图20180305212402.jpg

    由于电源波动或外界干扰等原因,输出的数据可能也会受到一定的影响,例如波动较大等现象,这时你可以通过读取多次传感器数值,求平均数的方法,减小数据的波动。



    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情

    2018-5-15 11:29
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2018-4-21 12:53 | 显示全部楼层
    谢谢大佬的分享~
  • TA的每日心情
    开心
    2018-9-7 23:25
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2018-5-18 13:18 | 显示全部楼层
    大佬的分享

    该用户从未签到

    发表于 2018-6-4 09:32 | 显示全部楼层
    大佬,为什么前面analog的参数都直接用了数字,这个地方却加上了A?

    该用户从未签到

    发表于 2018-7-23 09:03 | 显示全部楼层
    大佬,那个串口监视器在哪啊?

    点评

    IDE右上角  详情 回复 发表于 2018-7-23 09:41
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2018-7-23 09:41 | 显示全部楼层
    CatBoy 发表于 2018-7-23 09:03
    大佬,那个串口监视器在哪啊?

    IDE右上角
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    开心
    2018-8-4 00:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-8-6 17:01 | 显示全部楼层
    hanc 发表于 2018-6-4 09:32
    大佬,为什么前面analog的参数都直接用了数字,这个地方却加上了A?

    可以忽略,因为uno板子上模拟输入只有那A0~A5这六个口,所以不仅可以忽略A,而且你可以发现连pinMode都不用设置,因为它只管输入
  • TA的每日心情
    开心
    2018-9-4 15:16
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-9-4 15:05 | 显示全部楼层
    lixing401963897 发表于 2018-8-6 17:01
    可以忽略,因为uno板子上模拟输入只有那A0~A5这六个口,所以不仅可以忽略A,而且你可以发现连pinMode都 ...

    看代码感觉A0没有定义,它已经是预定义的常量吧?

    该用户从未签到

    发表于 2018-10-8 11:49 | 显示全部楼层
    我把电阻和光敏电阻的位置对调了一下,这样子串口回传的数据会更直观,数值大就说明比较亮,数值小就是暗
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    游戏机和开发板脑洞一下;这个本来就是开源的。
    游戏机和开发板脑洞一下;
    这个开发板和标准UNO是1;1的;通用。做在一起是因为可以不用游戏机时可以切换回来做开
    新人求助,关于舵机和限位开关。
    新人求助,关于舵机和限位
    新人求助社区各位哥哥姐姐,具体需要用航模遥控器的3段开关控制Arduino nano控制一个3
    基于MWC开源飞控DIY关键总结分享:
    基于MWC开源飞控DIY关键总
    很早就已经很想写这么一个帖,但总是由于各种原因没能落实,但最后还是找了时
    有关函数返回值的问题
    有关函数返回值的问题
    求助大神们,这个程序中有return返回值,但为什么有这个“ warning: return-statement
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表