【问题标题】:Arduino Micro keyboardArduino 微型键盘
【发布时间】:2018-09-10 13:18:32
【问题描述】:

我正在尝试用我的 Arduino Micro 制作键盘。电路还可以,但我的代码有一些问题,希望你能帮帮我。现在我只是在尝试使用 pin 8 中的一个键,当您按下按钮时,它应该会在 Web 浏览器中打开一个新选项卡。现在只需一个键,看看它是否有效。

我有这个代码:

#include <Keyboard.h>

void setup() {
  // put your setup code here, to run once:
  pinMode(8, INPUT);
  Keyboard.begin(); // setup keyboard
}

void loop() {
  // check buttons
  if (readButton(8)) {
    doAction(8);
  }
}

boolean readButton(int pin) {
  // check and debounce buttons
  if (digitalRead(pin) == HIGH) {
    delay(10000);
    if (digitalRead(pin) == HIGH) {
      return true;
    }
  }
  return false;
}

void doAction(int pin) {
  // perform tasks
  switch (pin) {
    case 8:
      // CMD + T (new tab, Chrome)
      Keyboard.press(KEY_LEFT_GUI);
      Keyboard.press('t');
      delay(10000);
      Keyboard.releaseAll();
      break;

  }
}

但是,一旦我上传代码,它就会开始自动打开新标签 10 秒钟,然后再停止 10 秒钟,然后重新开始。所有这一切都无需按下按钮,它会自动完成。知道我有什么问题吗?

【问题讨论】:

标签: button arduino keyboard


【解决方案1】:

根据文档,您正在使用Keyboard.press()

当被调用时,Keyboard.press() 的作用就像在您的键盘上按下并按住一个键。

也就是说,您正在按住键。因此 Arduino 不断将密钥序列 CMD + T (new tab, Chrome) 发送到您的 PC,因此 Chrome 将不断打开新标签。

您需要在给予足够的延迟后release,以便您只向应用程序发送一个按键。

要结束按键,请使用Keyboard.release()Keyboard.releaseAll()

从您使用的delay(10000) 可以明显看出这 10 秒。

【讨论】:

  • 嗨,clmno,非常感谢您的留言。我明白你的意思,但主要问题是 arduino 在不按下(或释放)任何按钮的情况下执行操作。它只是在上传到开发板后自动运行程序。
  • @tanaan 你把别针拔了吗?
  • 是的,有一个 10k 电阻。你是这个意思吗?
  • @tanaan 当你按下按钮时会发生什么?引脚被拉低(0V)还是被拉高?您编写了一个检测pull-up 的代码。
  • @tanaan 我问的是电压而不是代码。使用万用表了解连通性。如果连接正常并且如果程序在没有看到按钮按下事件时运行,那么很可能你已经将它连接到默认情况下被拉起,导致 prog 认为这是一个HIGH 事件并运行其余的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 2021-08-17
  • 2013-10-13
  • 2013-08-24
相关资源
最近更新 更多