Arduino实现“光敏小夜灯”
程序员文章站
2022-07-13 23:16:22
...
前言
想必大家对“小夜灯”也有所耳闻,但此夜灯非彼夜灯,我这个“小夜灯”呢,是利用光敏电阻传感器和RGB LED灯模拟而成,当达到一定暗时自动开灯,在很光的时候就关灯,既省电又省钱。
下面就来介绍一下我的这个“小夜灯”吧
材料
Arduino uno x1
光敏电阻 x1
RGB LED灯 x1
电阻 x3
跳线
参考
1.Arduino使用光敏电阻实验:
https://blog.csdn.net/ling3ye/article/details/47099575
2.使用Arduino开发板点亮RGB全彩LED灯
https://www.yiboard.com/thread-1013-1-1.html?tdsourcetag=s_pcqq_aiomsg
接线方法
程序
#include <Wire.h>
int redPin= 7;
int greenPin = 6;
int bluePin = 5;
int Intensity =0;//定义Intensity变量
#define AD5 A5//定义模拟口A5
void setup() {
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
}
void loop() {
//光线越暗,值越大;反之则越小。
Intensity = analogRead(AD5); //读取模拟口AD5的值,存入Intensity变量
Serial.print("Intensity = "); //串口输出"Intensity = "
Serial.println(Intensity); //串口输出Intensity变量的值,并换行
delay(500); //延时500ms
if(Intensity>600){
setColor(0, 0, 255); // Blue Color
delay(1000);
//大于600时,即达到了一定暗的程度,亮灯
}
else {
setColor(0, 0, 0); // Black Color
delay(1000);
//否则,灭灯
}
}
void setColor(int redValue, int greenValue, int blueValue) {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
}
测试数据
因为没有拍到串口数据,所以从其他博客找了一张差不多的,博客源地址,来自:ling3ye
在上面的代码那里,我已经解释了一下代码那里的Intensity的变化规律,光线越暗,值越大;光线越亮,值越小。
所以这里我设定了光线在大于600时,灯光亮;否则,灯光灭。
测试图片
- 捂住光敏电阻时,灯亮(相当于黑暗)
- 没有捂住光敏电阻时,灯不亮(相当于光照)
总结
此次实验我觉得是非常有意义的哈哈,现在才发现日常生活中这用“小夜灯”真的很普遍,以前觉得这些东西很厉害,现在我竟然也做出来了,感谢老师对我们的指导和帮助,倘若大家觉得有错误可以指出,谢谢~
上一篇: Arduino简单实战“光敏小夜灯”
下一篇: Arduino与光敏电阻