arduino感应LED灯

原计划……好久没写了。上个星期才结束暑期实习,这几天看了一下物联网智能家居方面,看到一个楼梯灯不错。正好手头有块arduino,还有一些零件。直接动手吧。

那个视频:https://www.bilibili.com/video/av7654915/?spm_id_from=333.788.videocard.2 

不错。我看了看我宿舍的上床楼梯。emmmm。就做一个玩玩吧。首先他的要求是在光线条件不好的情况下,监测到人了,LED灯会缓缓的增亮,增加到一定程度(不刺眼),保持亮几秒,然后再缓缓灭灯。设想挺美好,写代码有bug就非常那个啥了。

贴上代码。

const int motion_sensor=3;
const int light_sensor=4;//设置光敏传感器为常量数字4
const int led=6;//设置led为常量数字6


int state=0;//设置状态,0为灯关闭,1为正在开或者正在关,2为灯亮
boolean DARK=0;//设置DARK为0,默认为有光
int val;//设置人体传感器的变量
int bright=0;//设置led光亮的程度

void setup() {
Serial.begin(9600);//设置与电脑的波特率9600每秒
pinMode(motion_sensor,INPUT);
pinMode(light_sensor,INPUT);
pinMode(led,OUTPUT);

}     
void TURN_ON(){
        for(int i=0;i<255;i++){
          analogWrite(led,i);
          delay(50);
          }
          bright=255;
        }
void TURN_OFF(){
          Serial.println("人已经离开,开始关灯");
          for(bright=255;bright>=0;bright--){
            analogWrite(led,bright);
            delay(10);
            }
//            digitalWrite(led,0);
          bright=0;
          Serial.println("灯已经关闭");          
    }
    /*光敏传感器检测到光亮超过一定程度输出低电平
    */
void loop() {
  while(1){

    DARK=digitalRead(light_sensor);
    if(DARK==true){
      //检测到光亮到一定程度,再检测人体感应传感器
      Serial.println("检测到当前环境黑暗");
      val=digitalRead(motion_sensor);//检测人体
      if(val==1){
        Serial.println("检测到人体");
        if(bright==0||bright<255){
          Serial.println("开灯");
          TURN_ON();
          }
         else{//bright==255
          Serial.println("关灯");
              TURN_OFF();
            }
        } 
      else{
        if(bright!=0){
          TURN_OFF();
          }
        delay(3000);//没检测到光亮程度,延迟三秒再检测
        Serial.println("未检测到人,不开灯");
        }
    }        
    if(bright!=0){
          TURN_OFF();
          }
 }
}

一块arduino板,跳线数根,led灯,光敏电阻(我这里用的是光敏电阻模块了),人体感应模块。arduino感应LED灯_第1张图片看了眼,距离上次写文章已经是好久好久之前的了,那就赶紧先写一篇。水平有限,如有错误,敬请原谅,请告诉我纠正。

你可能感兴趣的:(arduino感应LED灯)