光线传感器能感应光线的变化,并且把光线变化通过电压变化体现出来。那我们就可以利用这种变化来制作一个环境感应灯。如果光线越暗,LED就越亮。光线充足,LED就不会发光。
# 部署
1.LCD的接口RS-D7
分别连接到OSEPP UNO的2~7
号引脚。
2.光线传感器Light Sensor
的端子接到OSEPP UNO的A0
引脚。
3.LED4
的端子连接到OSEPP UNO的9
号引脚。
# 程序搭建
- oseppBlock程序
- Arduino程序
#include <LiquidCrystal.h>
LiquidCrystal lcd1(2, 3, 4, 5, 6, 7); //定义LCD引脚
void setup()
{
lcd1.begin(16, 2); //LCD初始化
//led1
pinMode(9, OUTPUT); //定义LED引脚
//light1
pinMode(A0, INPUT); //定义光线传感器引脚
}
void loop()
{
analogWrite(9, map(constrain(analogRead(A0), 100, 450), 100, 450, 255, 0));
//把光线传感器的值限制在一个范围,且把这个范围映射到255-0来驱动LED
lcd1.clear(); //清屏
lcd1.setCursor(0, 0); //显示光标定位
lcd1.print(analogRead(A0)); //显示光线传感器的值
delay(1000); //延时1000毫秒
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 运行结果
传感器的光线被遮挡的时候,LED就会变亮,移开遮挡物时LED就变暗了。这里映射的输出值填的是255-0
,由大到小。所以当光线越弱的时候LED显示就越亮,光线越强的时候,LED显示就越暗。
# 解析
程序里面我们限制了光线传感器的值最小值是100
最大值是450
,这是为了防止光线变化超出映射值范围时程序失效。当然你可以更改这个值,当光线最暗时,LCD显示的是最小值,光线最亮时,LCD显示的就是最大值,把这两个值填入积木里面。
限制一个值的范围积木,当这个值超出这个范围时,只返回最小值或最大值。
代码:
constrain(x,0,255);
# 操作视频
← 光线传感器-显示光线值 光线传感器-光控灯 →