查看: 15934|回复: 20

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

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

    本版积分规则

    热门推荐

    ArduinoJason6教程由ArduinoJson作者Benoit亲自出马一对一教学
    ArduinoJason6教程由Ardui
    这几天我觉得社区教学好像缺了点什么,呃呃~我想一想好像是缺少了ArduinoJson6的教学
    Arduino+L298N小车实例教程
    Arduino+L298N小车实例教
    (第一次写教程,如有错漏,敬请拍砖)Arduino+L298N小车实例教程Arduino小车是一个非
    零知开源分享-蓝牙模块与手机APP通信
    零知开源分享-蓝牙模块与
    本篇文章中将讲解蓝牙模块与安卓手机APP进行通信。1、说明MCU:零知开发板-标准板模
    DHT库无法被找到
    DHT库无法被找到
    今天在安装了DHT库之后在编译时却显示无法找到库,请问我是在哪里安装出错了,谢谢大
    (可远程)ESP8266读DHT11温湿度,APP inventor制作app实时显示
    (可远程)ESP8266读DHT11
    原理讲解 原理简述:利用发布订阅模式。第一步,先读取DHT11温湿度数值,第二步,新
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表