查看: 694|回复: 2

[未解决] 关于时间控制LED熄灭问题

[复制链接]

该用户从未签到

发表于 2018-6-13 18:39 | 显示全部楼层 |阅读模式
求教:用人体热释制作感应灯实验(程序为网上下载用于学习,自己添加了时间控制函数),
为何设定了无动作时的等待时间如1分钟后灯无法自动熄灭,小白一枚请高手帮忙指点谢谢!程序代码如下:


#define LED 7      //定义LED引脚为7
#define BUTTON 2   //定义按钮开关引脚2
uint32_t duration=60000;//设定时间1分钟(60000毫秒)
uint32_t time;
uint32_t nowtime;
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

   nowtime=millis();

      if((millis()-nowtime)>duration)
      {

        digitalWrite(LED,LOW);
      }
  }
  else
  {
    digitalWrite(LED,LOW); //关闭LED
  }

}
  • TA的每日心情
    难过
    2018-9-3 08:56
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2018-6-13 20:16 | 显示全部楼层
    if((millis()-nowtime)>duration)这个地方不对,始终是0>duration

    该用户从未签到

     楼主| 发表于 2018-6-14 09:45 | 显示全部楼层
    改成了

    if((nowtime-millis())>duration)还是不行
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    【原创】制作一套USB电流采样板
    【原创】制作一套USB电流
    以前用 0.1Ω(R1J)曾经做过一个 USB 电流采集器,基本原理和 USB 电流表一致, 唯一
    arduino数字输出端低电平不稳定
    arduino数字输出端低电平
    我在做的功能: 用一个光电开关(买好的现成元件),发出高电平信号输入给arduino,然
    [Arduino物联网开发实战2]数据反馈
    [Arduino物联网开发实战2]
    [md]上一篇:(https://www.arduino.cn/thread-83177-1-1.html) ### 添加DIY组件
    博哥零基础教你玩转ESP8266(十四) ESP8266HTTPClient 连接世界
    博哥零基础教你玩转ESP826
    帖子导航帖 博哥零基础教你玩转ESP8266(一) 重识ESP8266 博哥零基础教你玩转ESP8266
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表