求教一下,小白一枚,通过人体热释模块作个实验,就是人经过时灯亮,再经过时灯灭。能否再控制灯亮达到几分钟后不管有没有动作灯都会自动灭
- #define LED 7 //定义LED引脚为7
- #define BUTTON 2 //定义按钮开关引脚2
- unsigned long ps=0;//定义上一次当前循环时间间隔
- const long interval = 60000;//定义固定时间间隔1分钟
- unsigned long cm=millis();//记录程序到此运行时间
- int val=0; //变量用来储存按钮状态
- int old_val=0; //暂存val变量的上一个时间单位
- int state=0; //0表示LED关闭,1表示打开
- void setup()
- {
- pinMode(LED,OUTPUT); //设定LED引脚为输出状态
- pinMode(BUTTON,INPUT); //设定按钮引脚为输入状态
- }
- void loop()
- {
- val=digitalRead(BUTTON); //读取按钮状态并储存
- if((val==HIGH)&&(old_val==LOW)) //检查按钮的变化情况
- {
- state=1-state;
- delay(40); //延时简单抗抖动
- }
- old_val=val; //VAL下载已经是旧的,让我们暂存一下
- if(state==1)
- {
- digitalWrite(LED,HIGH); //开启LED
- if (cm-ps>=interval)
- {
- ps=cm;
- if(LED==HIGH)
- {
- digitalWrite(LED,LOW);
- }
- }
- }
- else
- {
- digitalWrite(LED,LOW); //关闭LED
- }
- }
复制代码
|