arduino小夜灯

arduino小夜灯的制作

随着冬天的到来,白天也显得越来越短了,回到家中昏暗的环境容易让我们不小心就绊到脚,因此决定做一盏小夜灯能够在黑暗中照明。

首先,小夜灯所具有的功能当然是能够在黑暗中发光,其次,当白天时小夜灯将会关闭,当然,当没人在的黑夜中,会采用呼吸灯的方式,减少一些能耗。

因此,此次我们需要的材料有:

  • arduino uno
  • 光敏电阻
  • 人体红外传感器

首先从最简单的开始,因为我们将会用到呼吸灯的形式,显然常规的数字口并不能满足我们的需求,取而代之的是PWM口。PWM接口的输出范围在0~255,因为如果没人时并不需要使之达到全亮状态,因此,此处仅取一半的值,代码如下所示:

if (val < 500 && light> 1000) {         //无人光线暗,呼吸灯
    int i = 0;
    for (i = 0; i < 100; i++) {
      analogWrite(LED, i);
      if (i == 99) {
        break;
      }
    }
    for (i = 99; i > 0; i--) {
      analogWrite(LED, i);
      if (i == 1) {
        break;
      }
    }
  }

那光线的强度我们则通过光敏电阻的数值来判断,我们可采取如下语句读取数值:

  light = analogRead(LS);
  Serial.println(light);

当然此处的读数会因为光敏电阻的接线方法不同而不同,因此在你实际操作中应当改变此数值。

人体红外传感器的数值也用类似方式进行读取并简易区别有人与无人时的数值范围。

至此,小夜灯的基本功能也全都完成,具体代码如下:

#define LS A5
int inpin = 0;
int val = 0;
int light = 0;
int LED = 11;
void setup() {
  // put your setup code here, to run once:
  pinMode(inpin, INPUT);
  pinMode(LS, INPUT);
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  val = analogRead(inpin);
  Serial.println(val);
  light = analogRead(LS);
  Serial.println(light);
  delay(500);
  if (val > 500 && light > 1000) {    //有人并光线暗,开灯
    analogWrite(LED, 255);
  }
  if (val < 500 && light < 900) {    //光线亮无人,关灯
    analogWrite(LED, 0);
  }
  if (val < 500 && light > 1000) {         //无人光线暗,呼吸灯
    int i = 0;
    for (i = 0; i < 100; i++) {
      analogWrite(LED, i);
      if (i == 99) {
        break;
      }
    }
    for (i = 99; i > 0; i--) {
      analogWrite(LED, i);
      if (i == 1) {
        break;
      }
    }
  }
}
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值