ArduinoNano的人体感应暗光灯

原理是利用光敏电阻,对周围环境进行测试,如果较暗则开启红外感应模式,有人经过就亮。

电路图:

int ledPin = 5;          //定义LED群的输出引脚为 D5
int redData = 9;        //定义读取红外传感器的数据引脚 为 D9
int redDataValue;         //设置红外传感器初始变量
int light_value=0;      //设置光敏电阻变量 初始为0 
void setup() {
  Serial.begin(9600);   //用于测试9600下光敏电阻的感应数值
  pinMode(redData, INPUT);      //设置D9 引脚的红外传感器 为输入 也就是机器要读取它的数值
  pinMode(A5, INPUT);           //设置A5 也是机器读取的数值,
  pinMode(ledPin, OUTPUT);      //设置D5 也就是LED群的接口为 输出

}

void loop() {
  light_value = analogRead(A5);   //读取A5接口的光敏电阻数据
  Serial.println(light_value);    //在串口监视器中打印获取的数值,用于调试明暗
  delay(500);                     //延迟500ms
  if (light_value>700)            //若光敏电阻反馈的数值大于700,则开启红外感应模式
  {
    redDataValue = digitalRead(redData);    //读取D9引脚的红外感应器的 数值
    //Serial.print(redDataValue);           //后台打印数值用于调试
    if (redDataValue>0){                  //如果红外感应器 数值大于0,则认为可以开启LED群
      lightOn(ledPin);
    }
    delay(500);
    redDataValue = 0;                   //红外感应器 数值归0
  }
  light_value = 0;                    //结束时 将光敏电阻数值归0
}
void lightOn(uint8_t pin){                //LED群 亮起和熄灭函数
  for (int i = 0; i < 150; i++)
  {
     analogWrite(pin, i);             //向LED接口输入的电压 逐渐增大,产生渐变效果
     delay(400);
  }
  delay(10000);
  for (int i = 151; i >0; i--)      //向LED接口的电压逐渐减小,产生渐变效果
  {
     analogWrite(pin, i);
     delay(200);
  }
  digitalWrite(pin, LOW);           //最终将LED灯的电压降为LOW 也就是0.
}

参考资料:https://blog.csdn.net/jacka654321/article/details/81837186

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limaning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值