跳到主要内容

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() {}