You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Arduino的Keyboard.h库输出♥♦♣♠等Unicode字符的方法

解决Arduino用Keyboard.h输出花色符号的方案

嘿,我来帮你搞定这个用Arduino输出♥♦♣♠的问题!这些花色符号属于Unicode字符,不是标准ASCII码,所以直接用普通ASCII输出肯定不行,但用Keyboard.h完全能实现,下面给你一步步讲清楚:

先确认前提:你的Arduino板支持HID功能

首先要注意,不是所有Arduino都能用Keyboard.h!只有Leonardo、Micro、Pro Micro、Nano Every这类自带USB HID控制器的板子才行,Uno、Mega这类老款不行,这点一定要先搞清楚,不然代码烧进去也没用。

硬件接线(超简单,不用额外电阻)

  • 把四个按钮分别接到数字引脚2、3、4、5
  • 每个按钮的另一端直接接GND
  • 我们会用Arduino的内部上拉电阻,所以不用外接下拉电阻,省成本还省事

直接可用的代码示例

下面的代码直接烧进去就能用,按对应按钮就会输出对应的花色符号:

#include <Keyboard.h>

// 定义四个按钮对应的引脚
const int btnHeart = 2;
const int btnDiamond = 3;
const int btnClub = 4;
const int btnSpade = 5;

void setup() {
  // 启用内部上拉电阻,引脚默认高电平,按下按钮变低
  pinMode(btnHeart, INPUT_PULLUP);
  pinMode(btnDiamond, INPUT_PULLUP);
  pinMode(btnClub, INPUT_PULLUP);
  pinMode(btnSpade, INPUT_PULLUP);
  
  // 初始化键盘模拟功能
  Keyboard.begin();
  
  // 可选:打开串口用于调试(看按钮触发状态)
  Serial.begin(9600);
}

void loop() {
  // 检测心形按钮按下
  if (digitalRead(btnHeart) == LOW) {
    // 等待按钮释放,避免一次按多次输出
    while(digitalRead(btnHeart) == LOW);
    Keyboard.print("♥");
    Serial.println("输出了心形符号");
  }
  
  // 检测方块按钮按下
  if (digitalRead(btnDiamond) == LOW) {
    while(digitalRead(btnDiamond) == LOW);
    Keyboard.print("♦");
    Serial.println("输出了方块符号");
  }
  
  // 检测梅花按钮按下
  if (digitalRead(btnClub) == LOW) {
    while(digitalRead(btnClub) == LOW);
    Keyboard.print("♣");
    Serial.println("输出了梅花符号");
  }
  
  // 检测黑桃按钮按下
  if (digitalRead(btnSpade) == LOW) {
    while(digitalRead(btnSpade) == LOW);
    Keyboard.print("♠");
    Serial.println("输出了黑桃符号");
  }
  
  // 小延时防误触
  delay(50);
}

为什么这个代码能行?

  • 内部上拉电阻:INPUT_PULLUP模式让引脚默认保持高电平,按下按钮后接地变成低电平,这样我们只需要检测低电平就知道按钮被按了,不用接额外电阻。
  • Unicode字符输出:这些花色符号是Unicode字符,Arduino的Keyboard.print()会直接发送它们的UTF-8编码,现在Windows、macOS、Linux都支持UTF-8输入,所以能正确显示出来。
  • 防重复触发:while(digitalRead(btnX) == LOW);这行代码会等待按钮松开后再继续,避免按一次按钮连续输出好几个符号。

备用方案:用系统快捷键输出(针对特殊情况)

如果直接输出符号显示不正常(比如某些老系统不支持UTF-8),可以用系统的Unicode快捷键来模拟输入:

  • Windows系统:按住Alt键输入十进制码(♥=Alt+3,♦=Alt+4,♣=Alt+5,♠=Alt+6)
  • macOS系统:按住Option键输入对应符号(♥=Option+P,♦=Option+R,♣=Option+C,♠=Option+S)

比如Windows下的替代代码片段:

// 模拟Alt+3输出♥
Keyboard.press(KEY_LEFT_ALT);
Keyboard.print('3');
Keyboard.release(KEY_LEFT_ALT);

不过这个方法不跨平台,优先推荐前面的UTF-8直接输出方案。

内容的提问来源于stack exchange,提问作者Riemann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:53:51