Arduino Leonardo键盘行为

时间:2016-03-19 14:45:21

标签: keyboard arduino

所以我想使用Arduino Leonardo作为内置库的键盘输入。

boolean on;

void setup() {
  pinMode(13, OUTPUT);

  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);

  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);

  Keyboard.begin();
  on = true;
}

void loop() {
  if(digitalRead(2) == LOW) {
    Keyboard.end();
    on = false;
  }
  digitalWrite(13, on);

  if(digitalRead(3) == LOW) {
    Keyboard.press('w');
  }
  else {
    Keyboard.release('w');
  }

}

运行“Keyboard.end()”后,“Keyboard.press()”功能是否仍然有效?

我只是不希望Arduino打破,所以提前感谢答案!

3 个答案:

答案 0 :(得分:0)

您已在

中使用了begin功能
void setup() 
{
  pinMode(13, OUTPUT);

  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);

  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);

  Keyboard.begin();
  on = true;
}

你已经结束了

中的沟通
 if(digitalRead(2) == LOW) {
    Keyboard.end();
    on = false;
  }

一旦digitalRead(2)值变低,通信协议就停止了,你必须先使用另一个Keyboard.begin()

if(digitalRead(3) == LOW) 
{
    Keyboard.press('w'); 
}

最佳做法是使用Keyboard.begin();在void loop中

答案 1 :(得分:0)

根据您尝试做的事情,您应该这样做:

#include <Keyboard.h>
boolean on;
boolean disable;

void setup() {
  pinMode(13, OUTPUT);

  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);

  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);

  disable = false;
  on = true;
}

void loop() {
  if(digitalRead(2) == LOW) {
    disable = true;
    on = false;
  }

  digitalWrite(13, on);

  if(disable == false) {
    if(digitalRead(3) == LOW) {
      Keyboard.press('w');
    }
    else {
      Keyboard.release('w');
    }
  }
}

我开始使用#include是因为我使用的是最新版本的Arduino IDE。 无论如何,无论你使用的是你的版本还是最新版本的Arduino IDE,Keyboard.begin()Keyboard.end()什么都不做,因为我刚刚在我的Arduino Leonardo式电路板上测试过它(我使用过Leostick而不是真正的Arduino)。我不确定我是否完全正确,它可能取决于不同的操作系统(即使我尝试Windows和Mac时都没有出错)。说实话,我将它们留在那里只是为了安全起见,也是为了让你的代码更容易理解。

顺便说一下,你不会打破你的Arduino。

答案 2 :(得分:0)

键盘{ "type": "record", "name": "myRecord", "namespace": "com.test.app_list" "fields": [ { "type": "record", "name": "Id", "doc": "Device ID", "fields": [ { "name": "idType", "type": "int" },{ "name": "id", "type": "string" } ] }, { "type": "record", "name": "AppList", "doc": "", "fields": [ { "name": "appId", "type": "string", "avro.java.string": "String" }, { "name": "timestamp", "type": "long" }, { "name": "idList", "type": [{"type": "array", "items": "com.test.app_list.Id"}] } ] } ] } begin目前无法执行任何操作,省略它们不会影响您的代码。如果您转到Keyboard Library Github repo并查看endbegin功能,则会发现它们为空

end