Arduino Micro клавиатура - PullRequest
       19

Arduino Micro клавиатура

0 голосов
/ 09 сентября 2018

Я пытаюсь сделать клавиатуру с моим Arduino Micro. Схема в порядке, но у меня есть некоторые проблемы с кодом и надеюсь, что вы можете дать мне руку здесь. На данный момент я просто пытаюсь одним ключом в контакте 8, который должен открыть новую вкладку в веб-браузере, когда вы нажимаете кнопку. Только один ключ, чтобы посмотреть, работает ли он.

У меня есть этот код:

#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 секунд и запускается снова. Все это без нажатия кнопки, это происходит автоматически. Есть идеи, что я не прав?

1 Ответ

0 голосов
/ 10 сентября 2018

Вы используете Keyboard.press() который согласно документации

При вызове Keyboard.press() работает так, как если бы на клавиатуре была нажата и удерживалась клавиша.

То есть вы нажимаете и удерживаете клавишу. Таким образом, Arduino продолжает посылать последовательность клавиш CMD + T (new tab, Chrome) на ваш компьютер, и поэтому Chrome будет продолжать открывать новые вкладки.

Вам нужно release после достаточной задержки, чтобы отправить в приложение только одно нажатие клавиши.

Чтобы завершить нажатие клавиши, используйте Keyboard.release() или Keyboard.releaseAll().

10 секунд очевидны из delay(10000), который вы использовали.

...