nikoava 发表于 2016-3-9 19:23:28

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


想实现按钮改变时间间隔,一个按钮是加,一个按钮是减,分别是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);
    }
   }
}

PINKWALKMAN 发表于 2016-3-10 08:19:54

没明白标题的意思。

zjz5717 发表于 2016-3-10 19:24:19

我注意到你的按钮好像既没有上拉电阻也没有下拉电阻,可能会出现悬空波动,建议你查询一下关于按钮除波动的方案

xinhoujue 发表于 2016-3-10 23:47:04

zjz5717 发表于 2016-3-10 19:24 static/image/common/back.gif
我注意到你的按钮好像既没有上拉电阻也没有下拉电阻,可能会出现悬空波动,建议你查询一下关于按钮除波动的 ...

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

xinhoujue 发表于 2016-3-11 00:24:51

程序架构问题!!!!!

janeasy 发表于 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 的应该是赋值一个=(等号),而不是两个 ==。
页: [1]
查看完整版本: 请教贴:想实现按钮改变时间间隔,但输入程序后3盏灯一起亮,求指教一下