本篇介绍光敏电阻,通过模拟输入采集环境光强来控制LED灯亮度,做一个无需人为干预的自动控制设备。

传感器是一种检测装置,能感受并采集到被测量的信息,在当下物联网、智能家居中占据重要地位。一切智能化、自动化设备、各种云计算大数据分析中最基础的就是数据,数据从何而来,绝大多数都来自传感器。其中光敏电阻可算是最简单的传感器之一了。

光敏电阻是一种电阻值随照射光强度增加而下降的电阻,基于其内部光电效应,光照越强电阻值越小,光照越弱,电阻值越大。

1. 实验材料

  • Uno R3开发板
  • 配套USB数据线
  • 面包板及配套连接线
  • 1个LED灯
  • 1个220Ω限流电阻
  • 1个光敏电阻
  • 1个1K普通电阻

我们将光敏电阻作为一个电阻跟一个普通电阻串联,根据串联分压的方法,通过analogRead() 读取其电压。

2. 实验步骤

  1. 根据原理图搭建电路。

    直插LED灯正极连接限流电阻,电阻另一端连接开发板第10引脚,LED灯负极接开发板GND。光敏电阻一端接GND,电阻一端接5V,光敏电阻和普通电阻相接,然后接入A0引脚。

    实验原理图如下图所示:

    实物连接图如下图所示:

  2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

/*AutoLed通过光敏电阻检测环境光,进而控制LED灯亮度
*/int ledPin = 10;int sensorValue = 0; //保存读到的传感器模拟值
int ledValue = 0;  //保存LED灯占空比void setup()
{pinMode(ledPin, OUTPUT);     //数字口要选择带~号的具有pwm功能的输出口
}void loop()
{sensorValue = analogRead(A0);     //读取A0模拟口的数值ledValue = map(sensorValue, 400, 800, 0, 200); //将400到800之间的数据映射成0到200之间的数据analogWrite(ledPin, ledValue);   //PWM控制LED灯亮度delay(100);
}
  1. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

3. 实验现象

遮挡光敏电阻,LED灯变亮,无遮挡下,LED灯亮度变暗。

4. 实验分析

通过analogRead()读取光敏电阻与普通电阻串联分压后的电压数据,使用map()函数做重新映射,然后使用analogWrite()函数改变LED灯的亮度。

根据串联分压,光敏电阻上的电压值为R1/(R1+R2) * 5V。

通过测试发现遮挡和不遮挡的情况下,模拟输入的范围大概在400~800之间,所以map()函数里面区间为[400,800],由于电源波动或外界干扰等原因,输出的数据可能也会受到一定的影响,你得到的区间可能有变化,需要多次调整测试来达到理想效果。

更多内容,欢迎关注我的公众号。 微信扫一扫下方二维码即可关注:

Arduino基础入门篇11—光控灯相关推荐

  1. arduino 光控灯_Arduino基础入门篇11—光控灯

    阅读本文大概需要3分钟. 本篇介绍光敏电阻,通过模拟输入采集环境光强来控制LED灯亮度,做一个无需人为干预的自动控制设备. 传感器是一种检测装置,能感受并采集到被测量的信息,在当下物联网.智能家居中占 ...

  2. Arduino基础入门篇12—火焰报警器

    本篇介绍火焰传感器,通过火焰传感器感知周围环境是否存在明火,控制蜂鸣器对环境火焰进行报警提示. 1. 实验材料 Uno R3开发板 配套USB数据线 面包板及配套连接线 1个有源蜂鸣器 1个10KΩ电 ...

  3. 自学Arduino UNO串口(制造光控灯)

    一.Arduino串口介绍 串口用于不同设备间互相传输数据.比如,可以在电脑上实时输入指令,Arduino 板做出相应的反应,Arduino 板正在执行的工作也能实时反应在电脑上. 二.Arduino ...

  4. Arduino基础入门篇09—会呼吸的灯

    本篇使用Arduino模拟输出功能,通过PWM脉宽调制来控制LED灯亮度,使其呈现呼吸灯效果. 1. 模拟信号 数字信号是以0.1表示的电平不连续变化的信号,而模拟信号则是用连续变化的物理量来表示信息 ...

  5. Arduino基础入门篇06—流动的LED灯

    上一篇介绍了Arduino数字I/O引脚及相关函数,并点亮了板载LED灯.本篇将使用面包板搭建电路,多个LED灯配合显示流动效果. 1. 实验材料 Uno R3开发板 配套USB数据线 面包板及配套连 ...

  6. Arduino基础入门篇10—电位器控制LED灯

    本篇介绍Arduino模拟输入功能,通过读取电位器输入的电压值来控制LED灯的亮度. 模拟输入引脚是带有ADC(Analog-to-Digital Converter,模数转换器)功能的引脚.它可以将 ...

  7. Arduino基础入门篇07—按键控制LED灯

    前面介绍了Arduino数字I/O,通过控制数字引脚输出来控制LED灯亮灭.本篇将介绍数字I/O的输入功能,通过检测按键状态来控制LED灯亮灭,把LED的亮灭变成人为可控制的. 1. 实验材料 Uno ...

  8. Arduino基础入门篇16—数码管库的使用

    Arduino官方提供了丰富的驱动库来方便对外设进行操作,很多爱好者也在开源精神下提供了很多第三方库.本篇介绍数码管库的使用,通过读取电位器输入,使用数码管库驱动数码管显示对应数据. SevSeg库是 ...

  9. Arduino基础入门篇14—跳动的数码管

    本篇介绍数码管显示器件,通过控制一位共阴极数码管动态显示数字0到9来了解数码管的使用. 1. 数码管介绍 数码管,又称LED数码管,是常见的用来显示数字的电子器件.通常由八段发光二极管封装在一起组成& ...

最新文章

  1. Linux 更新vim
  2. wxpython使窗口重新显示_wxpython刷新窗口按按钮
  3. 面向 Android 软件开发套件(SDK)的 x86 Android* 系统映像许可协议
  4. 容器技术Docker K8s 6 阿里云容器服务体系介绍
  5. 分享一个鼠标宏软件(XMouseButtonControl)用于替换logitech option等软件
  6. 测试结果OK、POK、NG、NT的意义
  7. html网页打开慢的解决方法,真实案例讲述导致网站打开速度慢的原因及解决方法...
  8. 第39级台阶回溯算法c语言,回溯39级台阶
  9. java中jlaber用法_laber的for属性
  10. 计算机教程文档,计算机应用基础教程-20210323002444.doc-原创力文档
  11. R语言 图片识别文字 PNG JPG图片转文字 OCR tesseract包
  12. 2D前景触发与3D触发结合案例
  13. 如果你有个程序员男友,那么送这12 款键盘绝对不会错
  14. 一文了解循环神经网络
  15. 番茄花园版侵权被禁,用户怎么办?
  16. Win10无法搜索应用解决
  17. 设计中的设计-设计的意义
  18. 【数学】SSL_1335 蛋糕切割
  19. 《数据结构-李云清版》笔记 - 概论
  20. python画圣诞老人简笔画_利用Python绘制有趣的万圣节南瓜怪效果

热门文章

  1. 【Angular】08服务serve
  2. 分布式体系架构与分布式计算相关问题
  3. java萤石云,Android-再次解读萤石云视频
  4. ABT 节点 1.0.31 版更新发布 | ArcBlock 动态
  5. 女程序员的成长记录第一站
  6. 欧姆龙PLC与fanuc发那科机器人进行Ethrenet ip通信测试
  7. 2018数学建模往年试题汇总
  8. GinCMS 使用golang Gin框架xorm开发的小型内容管理系统
  9. UG塑胶模具设计的全过程
  10. 12306不堪重负 新型黄牛党开发订票软件牟利