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

本教程介绍了如何使用Arduino Uno R3和光敏电阻制作一个光控灯。通过模拟输入读取环境光强,根据光强自动调整LED灯的亮度。文中详细阐述了实验材料、电路搭建、代码实现以及实验现象和原理。
摘要由CSDN通过智能技术生成

阅读本文大概需要3分钟。

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

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

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

光敏电阻

1. 实验材料

Uno R3开发板

配套USB数据线

面包板及配套连接线

1个LED灯

1个220Ω限流电阻

1个光敏电阻

1个1K普通电阻

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

串联分压

2. 实验步骤

根据原理图搭建电路。

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

实验原理图如下图所示:

实验原理图

实物连接图如下图所示:

实物连接图

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

2   AutoLed

3   通过光敏电阻检测环境光,进而控制LED灯亮度

4*/

5

6int ledPin = 10;

7

8int sensorValue = 0; //保存读到的传感器模拟值

9int ledValue = 0;  //保存LED灯占空比

10

11void setup()

12{

13  pinMode(ledPin, OUTPUT);     //数字口要选择带~号的具有pwm功能的输出口

14}

15

16void loop()

17{

18  sensorValue = analogRead(A0);     //读取A0模拟口的数值

19  ledValue = map(sensorValue, 400, 800, 0, 200); //将400到800之间的数据映射成0到200之间的数据

20  analogWrite(ledPin, ledValue);   //PWM控制LED灯亮度

21  delay(100);

22}

连接开发板,设置好对应端口号和开发板类型,进行程序下载。

程序下载

3. 实验现象

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

实验现象

4. 实验分析

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

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

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

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值