Emakefun Matrix Keyboard Arduino 库 1.0.1
载入中...
搜索中...
未找到
print_key_state.ino
浏览该文件的文档.
1/**
2 * @~Chinese
3 * @file print_key_state.ino
4 * @brief 示例:循环判断每个按键的状态。
5 * @example print_key_state.ino
6 * 循环判断每个按键的状态
7 */
8/**
9 * @~English
10 * @file print_key_state.ino
11 * @brief Example: Loop to determine the status of each key.
12 * @example print_key_state.ino
13 * Loop to determine the status of each key.
14 */
15
16#include <Wire.h>
17
18#include "matrix_keyboard.h"
19
20#define PRINT_KEY_STATE(key) \
21 if (g_matrix_keyboard.Pressed(emakefun::MatrixKeyboard::kKey##key)) { \
22 Serial.println(F("key " #key " pressed")); \
23 } else if (g_matrix_keyboard.Pressing(emakefun::MatrixKeyboard::kKey##key)) { \
24 Serial.println(F("key " #key " pressing")); \
25 } else if (g_matrix_keyboard.Released(emakefun::MatrixKeyboard::kKey##key)) { \
26 Serial.println(F("key " #key " released")); \
27 }
28
29namespace {
30#if defined(ESP32)
31constexpr gpio_num_t kI2cPinSda = GPIO_NUM_21;
32constexpr gpio_num_t kI2cPinScl = GPIO_NUM_22;
33#endif
34
36
37} // namespace
38
39void setup() {
40 Serial.begin(115200);
41
42#if defined(ESP32)
43 Wire.begin(kI2cPinSda, kI2cPinScl);
44#else
45 Wire.begin();
46#endif
47
48 const auto result = g_matrix_keyboard.Initialize();
49
51 Serial.println(F("matrix keyboard initialization successful"));
52 } else {
53 Serial.print(F("Error: matrix keyboard initialization failed: "));
54 Serial.println(static_cast<uint32_t>(result));
55 while (true);
56 }
57}
58
59void loop() {
60 g_matrix_keyboard.Tick();
61 PRINT_KEY_STATE(0);
62 PRINT_KEY_STATE(1);
63 PRINT_KEY_STATE(2);
64 PRINT_KEY_STATE(3);
65 PRINT_KEY_STATE(4);
66 PRINT_KEY_STATE(5);
67 PRINT_KEY_STATE(6);
68 PRINT_KEY_STATE(7);
69 PRINT_KEY_STATE(8);
70 PRINT_KEY_STATE(9);
71 PRINT_KEY_STATE(A);
72 PRINT_KEY_STATE(B);
73 PRINT_KEY_STATE(C);
74 PRINT_KEY_STATE(D);
75 PRINT_KEY_STATE(Asterisk);
76 PRINT_KEY_STATE(NumberSign);
77}
MatrixKeyboard是用于矩阵键盘模块的驱动类。
static constexpr uint8_t kDefaultI2cAddress
默认I2C地址。