Skip to content

Arduino - 键盘串口

某些具有原生 USB 功能的 Arduino 板可以充当人机接口设备(HID),例如键盘或鼠标。这允许您的 Arduino 通过 USB 直接打字、按下组合键并控制计算机。Leonardo、Micro、Due 和 Zero 等板支持此功能。

像 Arduino Uno 或 Nano 这样的板不能直接使用此功能,因为它们的 USB 通信由一个独立的芯片处理。

当您使用 Keyboard 库时,您的 Arduino 将控制您电脑的键盘。一个有 bug 的程序(sketch)可能导致您无法使用电脑或上传新代码。请务必在您的程序中包含安全机制,例如物理开关或启动延迟,以防止失去控制。

  • 1 × Arduino Leonardo、Micro、Due 或其他 HID 兼容板
  • 1 × USB 数据线

无需外部接线。只需通过 USB 将您的板连接到计算机即可。

Keyboard.h 库对于兼容的板是内置的,无需安装。您只需将其包含在您的程序(sketch)中即可。

  • Keyboard.begin():初始化键盘模拟。
  • Keyboard.write(char):按下并释放单个按键。可以发送可打印的 ASCII 字符或特殊键码(例如 KEY_RETURN、KEY_LEFT_ARROW)。
  • Keyboard.print(string):打出一系列字符。
  • Keyboard.println(string):打出一个字符串,后面跟着回车符和换行符。
  • Keyboard.press(key):按住一个键(例如 KEY_LEFT_CTRL)。
  • Keyboard.release(key):释放之前按下的键。
  • Keyboard.releaseAll():释放当前按下的所有键。

这个程序(sketch)监听串口监视器上的一个字符,然后打出该字符的下一个字符(例如,发送 a 会打出 b)。

#include "Keyboard.h"
void setup() {
// 安全延迟:给您 5 秒钟来上传新的程序(sketch)
// 在键盘功能启动之前。
delay(5000);
Serial.begin(9600);
Keyboard.begin(); // 启动键盘模拟
}
void loop() {
if (Serial.available() > 0) {
char inChar = Serial.read();
// 除非有意为之,否则不要键入控制字符
if (isprint(inChar)) {
Serial.print("Received: ");
Serial.print(inChar);
Serial.print(", Typing: ");
Serial.println((char)(inChar + 1));
// 键入接收到的字符的下一个 ASCII 值
Keyboard.write(inChar + 1);
}
}
}

这个更高级的程序(sketch)演示了如何发送命令和快捷键,例如在 Windows 上打开记事本并输入消息。

#include "Keyboard.h"
void setup() {
delay(5000); // 安全延迟!
Keyboard.begin();
// 示例:在启动时运行一次
openNotepadAndType();
}
void loop() {
// 循环为空,因为操作只在 setup 中运行一次。
// 您可以在这里添加按钮来触发操作。
}
// 一个用于打开记事本(Windows)并输入消息的函数
void openNotepadAndType() {
// 按下 Windows 键
Keyboard.press(KEY_LEFT_GUI);
delay(100);
Keyboard.release(KEY_LEFT_GUI);
delay(500);
// 键入 "notepad" 并按下 Enter
Keyboard.println("notepad");
delay(1000); // 等待记事本打开
// 键入消息
Keyboard.println("Hello from your Arduino!");
Keyboard.println("This is a demonstration of the Keyboard library.");
// 快捷键示例:Ctrl + S 保存
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('s');
delay(100);
Keyboard.releaseAll();
}
  • 应用:用于软件或游戏快捷方式的自定义宏按键板、辅助技术设备、自动化重复数据输入。
  • 如何恢复:如果一个程序(sketch)控制了您的电脑,您需要掌握上传空白程序的时间。按住 Arduino 上的复位按钮,在 IDE 中点击“上传”,并在 IDE 显示“正在上传…”时立即释放复位按钮。
  • 键盘布局:Keyboard 库默认为美式英语布局。在不同布局的计算机上使用它可能会产生不正确的字符。需要自定义库才能完全支持国际化。