Wio Terminal 按键

Wio-Terminal 上方有三个蓝色按键,本文主要介绍如何配置和使用 Wio-Terminal 的这三个按键。

按键定义

variant.h 中预定义了三个按键的宏定义,有两种命名风格,我们在编程的时候可以直接使用它们。

/*
 * BUTTON
 */
#define BUTTON_1 (28ul)
#define BUTTON_2 (29ul)
#define BUTTON_3 (30ul)
#define WIO_KEY_A (28ul)
#define WIO_KEY_B (29ul)
#define WIO_KEY_C (30ul)

轮询示例

正如前面所说,你可以是 WIO_KEY_AWIO_KEY_BWIO_KEY_C,也可以使用 BUTTON_1BUTTON_2BUTTON_3 名字。

下面是采用轮询方式检查按键状态的一个简单示例:

void setup() {
  Serial.begin(115200);
  pinMode(WIO_KEY_A, INPUT_PULLUP);
  pinMode(WIO_KEY_B, INPUT_PULLUP);
  pinMode(WIO_KEY_C, INPUT_PULLUP);
}

void loop() {
  // put your main code here, to run repeatedly:
   if (digitalRead(WIO_KEY_A) == LOW) {
    Serial.println("A Key pressed");
   }
   else if (digitalRead(WIO_KEY_B) == LOW) {
    Serial.println("B Key pressed");
   }
   else if (digitalRead(WIO_KEY_C) == LOW) {
    Serial.println("C Key pressed");
   }
   delay(200);
}

中断示例

下面是采用中断绑定方式触发按键动作的一个简单示例:

/* Interrupt handler */
void button_handler_a() { Serial.println("button A"); }
void button_handler_b() { Serial.println("button B"); }
void button_handler_c() { Serial.println("button C"); }

void setup() {

    Serial.begin(115200);

    /* Button setup */
    pinMode(WIO_KEY_A,    INPUT);
    pinMode(WIO_KEY_B,    INPUT);
    pinMode(WIO_KEY_C,    INPUT);

    /* Attach */
    attachInterrupt(digitalPinToInterrupt(WIO_KEY_A),     button_handler_a,     FALLING);
    attachInterrupt(digitalPinToInterrupt(WIO_KEY_B),     button_handler_b,     FALLING);
    attachInterrupt(digitalPinToInterrupt(WIO_KEY_C),     button_handler_c,     FALLING);
}

void loop() {}

Leave a Reply