极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14256|回复: 5

按键问题。

[复制链接]
发表于 2016-4-13 20:46:17 | 显示全部楼层 |阅读模式
void setup()
......
(LED)....

void loop()
....
(LED)....

void ScanKey()
{
KEY_NUM == 0;
if(digitalRead(KEY)==LOW)
{
delay(10);
if(digitalRead(KEY)==LOW)
{
KEY_NUM == 1;
while(digitalRead(KEY)==LOW);
}
}
}

上面是一种按键程序,这种按键是按一下灯亮再按一下灯灭,根据按下之后是否松开来判断,现在我想改成以按下来判断,而不是等待松开。把LOW换成HIGH是可以实现,但是当多个按键都是这样的时候就不行了,求大神帮忙!!
回复

使用道具 举报

发表于 2016-4-14 10:42:46 | 显示全部楼层
这样的按键程序,貌似应该每一个KEY要有一个KEY_NUM变量对应
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-14 12:48:58 | 显示全部楼层
wwwusr 发表于 2016-4-14 10:42
这样的按键程序,貌似应该每一个KEY要有一个KEY_NUM变量对应


#define LED 13
#define KEY 2

int KEY_NUM = 0;

void setup()
{
  pinMode(LED,OUTPUT);
  pinMode(KEY,INPUT_PULLUP);
}

void loop()
{
  ScanKey();
  if(KEY_NUM == 1)
  {   
    digitalWrite(LED,!digitalRead(LED));
  }
}

void ScanKey()
{
  KEY_NUM = 0;
  if(digitalRead(KEY) == LOW)
  {
    delay(20);
    if(digitalRead(KEY) == LOW)
    {
      KEY_NUM = 1;
      while(digitalRead(KEY) == LOW);
    }
  }
}
回复 支持 反对

使用道具 举报

发表于 2016-4-14 17:17:57 | 显示全部楼层
qwer1111 发表于 2016-4-14 12:48
#define LED 13
#define KEY 2

?这不还是一个按键的么
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-15 08:50:15 | 显示全部楼层
wwwusr 发表于 2016-4-14 17:17
?这不还是一个按键的么

#define LED1 13
#define LED2 14
#define KEY1 2
#define KEY2 3

int KEY1_NUM = 0;
int KEY2_NUM = 0;

void setup()
{
   pinMode(LED1,OUTPUT);
   pinMode(LED2,OUTPUT);
   pinMode(KEY1,INPUT_PULLUP);
   pinMode(KEY2,INPUT_PULLUP);
}

void loop()
{
   ScanKey1();
   if(KEY1_NUM == 1)
   {   
     digitalWrite(LED1,!digitalRead(LED1));
   }
   
      ScanKey2();
   if(KEY2_NUM == 1)
   {   
     digitalWrite(LED2,!digitalRead(LED2));
   }
   
}

void ScanKey1()
{
   KEY1_NUM = 0;
   if(digitalRead(KEY1) == LOW)
   {
     delay(20);
     if(digitalRead(KEY1) == LOW)
     {
       KEY1_NUM = 1;
       while(digitalRead(KEY1) == LOW);
     }
   }
}

  void ScanKey2()
{
   KEY2_NUM = 0;
   if(digitalRead(KEY2) == LOW)
   {
     delay(20);
     if(digitalRead(KEY2) == LOW)
     {
       KEY2_NUM = 1;
       while(digitalRead(KEY2) == LOW);
     }
   }
}


以此类推 想加几个就几个 但这不是问题的重点啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-26 08:59:05 | 显示全部楼层
求破。。。。。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 18:59 , Processed in 0.038587 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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