欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

接线方法

Arduino实现“光敏小夜灯”

程序

#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

Arduino实现“光敏小夜灯”在上面的代码那里,我已经解释了一下代码那里的Intensity的变化规律,光线越暗,值越大;光线越亮,值越小。

所以这里我设定了光线在大于600时,灯光亮;否则,灯光灭。

测试图片

  1. 捂住光敏电阻时,灯亮(相当于黑暗)
    Arduino实现“光敏小夜灯”
  2. 没有捂住光敏电阻时,灯不亮(相当于光照)
    Arduino实现“光敏小夜灯”

总结

此次实验我觉得是非常有意义的哈哈,现在才发现日常生活中这用“小夜灯”真的很普遍,以前觉得这些东西很厉害,现在我竟然也做出来了,感谢老师对我们的指导和帮助,倘若大家觉得有错误可以指出,谢谢~