|
发表于 2018-6-13 16:55:45
|
显示全部楼层
请教!为何我的程序根据您的提示加入时间控制,LED灯无法自动熄灭,请指点谢谢
程序代码如下:
// 人体热释感应开关控制LED灯
#define AUTO_OFF 1000*60 //定義你要關機的定時時間,比方說 1 分钟=1秒*60*60
#define LED 7 //定义LED引脚为13
#define BUTTON 2 //定义按钮开关引脚
unsigned long START_TIME; //設定時間記錄變數
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
}
else
{
digitalWrite(LED,LOW); //关闭LED
}
START_TIME=millis();
if ( millis() - START_TIME > (unsigned long) AUTO_OFF )
{
digitalWrite(LED,LOW);
}
}
|
|