Arduino USB HID 键盘模拟:按键控制与 LED 指示
Arduino USB HID 键盘模拟:按键控制与 LED 指示
本文将分析一段 Arduino 代码,该代码使用 USBHIDKeyboard 库实现键盘模拟功能。该项目使用三个按键分别模拟字符 'c'、左 Ctrl 键和字符 'v' 的输入,并通过 LED 灯指示按键状态。
**代码:**arduino#ifndef USER_USB_RAM#endif#include 'src/userUsbHidKeyboard/USBHIDKeyboard.h'
#define BUTTON1_PIN 16 #define BUTTON2_PIN 15#define BUTTON3_PIN 14
#define LED_BUILTIN 17
bool button1PressPrev = false;bool button2PressPrev = false;bool button3PressPrev = false;bool ledstate = false;
void setup() { USBInit(); pinMode(BUTTON1_PIN, INPUT_PULLUP); pinMode(BUTTON2_PIN, INPUT_PULLUP); pinMode(BUTTON3_PIN, INPUT_PULLUP); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); }
void loop() {
bool button1Press = !digitalRead(BUTTON1_PIN); if (button1PressPrev != button1Press) { button1PressPrev = button1Press; if (button1Press) { Keyboard_press('c'); } else { Keyboard_release('c'); } }
bool button2Press = !digitalRead(BUTTON2_PIN); if (button2PressPrev != button2Press) { button2PressPrev = button2Press; if (button2Press) { Keyboard_press(KEY_LEFT_CTRL); } else { Keyboard_release(KEY_LEFT_CTRL); } }
bool button3Press = !digitalRead(BUTTON3_PIN); if (button3PressPrev != button3Press) { button3PressPrev = button3Press; if (button3Press) { Keyboard_press('v'); } else { Keyboard_release('v'); } }
if (digitalRead(BUTTON2_PIN) == false && digitalRead(BUTTON3_PIN) == false && digitalRead(BUTTON1_PIN) == false) { delay(350); if (digitalRead(BUTTON2_PIN) == false && digitalRead(BUTTON3_PIN) == false && digitalRead(BUTTON1_PIN) == false) { if (ledstate == false) { ledstate = true; } else { ledstate = false; } }
} if (ledstate == false) { digitalWrite(LED_BUILTIN,HIGH); } else { digitalWrite(LED_BUILTIN,LOW); }
delay(50);
}
代码解析:
-
头文件与定义: -
#include 'src/userUsbHidKeyboard/USBHIDKeyboard.h': 引入 USBHIDKeyboard 库,用于模拟键盘操作。 -#define部分定义了三个按键引脚和 LED 引脚。 -
变量: -
button1PressPrev,button2PressPrev,button3PressPrev: 记录按键的上一次状态,用于检测按键状态变化。 -ledstate: 记录 LED 状态。 -
setup()函数: -USBInit(): 初始化 USB 连接。 -pinMode(): 设置按键引脚为输入模式,启用内部上拉电阻。 -pinMode(LED_BUILTIN, OUTPUT): 设置 LED 引脚为输出模式。 -digitalWrite(LED_BUILTIN, HIGH): 初始化 LED 状态为亮。 -
loop()函数: - 按键检测: - 读取每个按键引脚的状态,并与上一次状态进行比较。 - 如果状态发生变化,则更新按键状态变量,并调用Keyboard_press()或Keyboard_release()函数模拟按键按下或释放。 - LED 控制: - 当三个按键同时按下并保持一段时间后,LED 状态翻转。
总结:
这段代码实现了一个简单的 USB HID 键盘模拟器,通过按键控制可以模拟键盘输入,并通过 LED 灯指示按键状态。你可以根据自己的需求修改代码,例如更改按键映射或添加更多功能。
原文地址: https://www.cveoy.top/t/topic/PYw 著作权归作者所有。请勿转载和采集!