查看: 10468|回复: 15

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

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

    本版积分规则

    热门推荐

    AT固件无法正常使用
    AT固件无法正常使用
    按照文档烧入AT固件后,串口(9600)输出如下: 发送AT指令没有反应。
    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    数字传感器与模拟传感器的使用
    数字传感器与模拟传感器的
    很多新人问,如何写XX传感器的驱动,这里说说简单只需要读取一个数字信号或者模拟信号
    基于Esp8266的点阵时钟
    基于Esp8266的点阵时钟
    芯片是ESP8266 12F 配合点阵单元板(64*32,单色),实现自动对时,天气预报,农历,
    做个遥控玩具
    做个遥控玩具
    现在我想做个手工,想用这个当5V马达+5V灯光+5V音乐的遥控器 可以实现吗?还需要买Ar
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表