Arduino-光控灯的实现

光传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。光传感器不只局限于对光的探测,它还可以作为探测元件组成其他传感器,对许多非电量进行检测,只要将这些非电量转换为光信号的变化即可。

光敏电阻是一种电阻值随照射光强度增加而下降的电阻,光照越强电阻值越小,光照越弱,电阻值越大。

(1)实验材料
Arduino板一个;
光敏开关一个;
导线若干;
电阻2个,1个光敏电阻,1个1K普通电阻;
配套USB数据线;
1个LED灯;
1个220Ω限流电阻;

(2) 实验步骤
将光敏电阻作为一个电阻跟一个普通电阻串联,根据串联分压的方法,通过analogRead() 读取其电压,直插LED灯正极连接限流电阻,电阻另一端连接开发板第10引脚,LED灯负极接开发板GND。光敏电阻一端接GND,电阻一端接5V,光敏电阻和普通电阻相接,然后接入A0引脚。

(3)连图如下:
在这里插入图片描述

(4)代码块:

/*
   通过光敏电阻检测环境光,进而控制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); 
  }

(5)关键代码
通过analogRead()读取光敏电阻与普通电阻串联分压后的电压数据,使用map()函数做重新映射,然后使用analogWrite()函数改变LED灯的亮度。根据串联分压,光敏电阻上的电压值为R1/(R1+R2) * 5V。通过测试发现遮挡和不遮挡的情况下,模拟输入的范围大概在400~800之间,所以map()函数里面区间为[400,800],由于电源波动或外界干扰等原因,输出的数据可能也会受到一定的影响。

(6)连接开发板,设置好对应端口号和开发板类型,进行程序下载。
在这里插入图片描述

(7)效果
遮挡光敏电阻,LED灯变亮,不遮挡光敏电阻,LED灯变暗。
在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值