Arduino 按键实验

Arduino 按键实验

代码

#define KEY 7
int KEY_NUM = 0;
int count = 0;

#define LED_R 11
#define LED_G 10
#define LED_B 9

#define LED_ON HIGH
#define LED_OFF LOW
int state = 0;

void setup()
{
  pinMode(LED_R, OUTPUT);
  pinMode(LED_G, OUTPUT);
  pinMode(LED_B, OUTPUT);
  pinMode(KEY, INPUT_PULLUP); // 将7号引脚 设置为输入并且内部上拉模式
  Serial.begin(9600); // setup serial
}

void loop()
{
  scanKey();
  if (KEY_NUM == 1)
  {
    KEY_NUM = 0;
    switch (state++)
    {
      case 0:
        digitalWrite(LED_R, LED_ON);
        digitalWrite(LED_G, LED_OFF);
        digitalWrite(LED_B, LED_OFF);
        break;
      case 1:
        digitalWrite(LED_R, LED_OFF);
        digitalWrite(LED_G, LED_ON);
        digitalWrite(LED_B, LED_OFF);
        break;
      case 2:
        digitalWrite(LED_R, LED_OFF);
        digitalWrite(LED_G, LED_OFF);
        digitalWrite(LED_B, LED_ON);
        break;
    }

    if (state == 3)
      state = 0;
    Serial.println("KEY DOWN");
  }

}

// 读取按键状态
void scanKey()
{
  if (digitalRead(KEY) == LOW)
  {
    delay(10);
    if (digitalRead(KEY) == LOW)
    {
      while (digitalRead(KEY) == LOW);
      KEY_NUM = 1;
    }
  }
}


 

发表回复

您的电子邮箱地址不会被公开。