极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13882|回复: 5

请教贴:想实现按钮改变时间间隔,但输入程序后3盏灯一起亮,求指教一下

[复制链接]
发表于 2016-3-9 19:23:28 | 显示全部楼层 |阅读模式

想实现按钮改变时间间隔,一个按钮是加,一个按钮是减,分别是1分钟,10分钟,20分钟间隔,并用不同颜色对的led表示,但输入程序后灯全部一起亮了,改了很久都无法达到理想要求,求大神们指引一下,谢谢

int t = 60000;//1分钟
int i = 1;
int KEY_NUM1 = 0;
int KEY_NUM2 = 0;
void setup ()
{
  Serial.begin(9600);
  pinMode(4,INPUT_PULLUP);   
  pinMode(10,INPUT_PULLUP);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
}

void loop()
{
  if (i = 1)
  {
    digitalWrite(5,HIGH);
    digitalWrite(6,LOW);
    digitalWrite(7,LOW);
  }
  if (i = 2)
  {
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
    digitalWrite(7,LOW);
  }
    if (i = 3)
  {
    digitalWrite(5,LOW);
    digitalWrite(6,LOW);
    digitalWrite(7,HIGH);
  }

  ScanKey1();
  if(KEY_NUM1 == 1)
  {
      i = i++;
     if(i>= 3)
      {
        i == 3;
      }   
      t=t+600000;                         //每次累加值为10分钟
      if (t>=1200000);
      t=1200000;                         //限定最大值为20分钟(1200000)   
      Serial.print("time interval=");   
      Serial.println(t); //显示时间
       delay (300);
    }

ScanKey2();
  if(KEY_NUM2 == 1)
   i = i--;
   if(i<= 0)
      {
        i == 0;
      }
    t=t-600000;//每次累减值为10分钟
    if (t<=0) {
      t=0;

      Serial.print("time interval=");   
      Serial.println(t); //显示时间
       delay (300);
               }
}

void ScanKey1()
{
  int up =digitalRead(4); //读取4号口的状态
  KEY_NUM1 = 0;
  if(digitalRead(up) == HIGH)
  {
    delay(20);
    if(digitalRead(up) == HIGH)
    {
     KEY_NUM1 = 1;
     while(digitalRead(up) == HIGH);
    }
  }
}

void ScanKey2()
{
  int down = digitalRead(10);     //读取10号口的状态   
  KEY_NUM2= 0;
  if(digitalRead(down) == HIGH)
   {
    delay(20);
    if(digitalRead(down) == HIGH)
    {
     KEY_NUM2 = 1;
     while(digitalRead(down) == HIGH);
    }
   }
  }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-3-10 08:19:54 | 显示全部楼层
没明白标题的意思。
回复 支持 反对

使用道具 举报

发表于 2016-3-10 19:24:19 | 显示全部楼层
我注意到你的按钮好像既没有上拉电阻也没有下拉电阻,可能会出现悬空波动,建议你查询一下关于按钮除波动的方案
回复 支持 反对

使用道具 举报

发表于 2016-3-10 23:47:04 | 显示全部楼层
zjz5717 发表于 2016-3-10 19:24
我注意到你的按钮好像既没有上拉电阻也没有下拉电阻,可能会出现悬空波动,建议你查询一下关于按钮除波动的 ...

程序里已经设置按钮【使能】上拉电阻,故电路中的按钮不再需要外接下拉电阻了。这样电路比较简洁。
回复 支持 反对

使用道具 举报

发表于 2016-3-11 00:24:51 | 显示全部楼层
程序架构问题!!!!!
回复 支持 反对

使用道具 举报

发表于 2016-3-11 01:25:04 | 显示全部楼层
本帖最后由 janeasy 于 2016-3-11 01:28 编辑

感觉是 Scankey  中 digitalRead(up) 或 (down) 有问题,上面的 up=digitaRead(4) 得到up值应该不是0就是1,再用 digitalRead(up) 获得的应该是 0或1 端口的状态吧!在scankey中增加输出看看就知到了。
还有 if 主体中 i 的应该是赋值一个=(等号),而不是两个 ==。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 04:32 , Processed in 0.042619 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表