查看: 17373|回复: 22

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

[复制链接]
  • 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 | 显示全部楼层
    我把电阻和光敏电阻的位置对调了一下,这样子串口回传的数据会更直观,数值大就说明比较亮,数值小就是暗
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    基于arduino的delta并联机械手
    基于arduino的delta并联机
    delta并联机械手现在广泛应用于工业,因为资金有限,用舵机做的,底座这些也是
    哪位大神知道怎么用这个16*16的led
    哪位大神知道怎么用这个16
    不知道这里的引脚A,B,C,D,DI,CLK,LAT有什么用啊
    【Arduino】108种传感器模块系列实验(42)---PM2.5韩国粉尘模块
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    求各位大佬帮帮新人
    求各位大佬帮帮新人
    void setup() { // put your setup code here, to run once: #include delay(50
    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表