簡體   English   中英

Arduino HID 鍵盤鍵碼無法正常工作

[英]Arduino HID keyboard keycodes not working properly

我正在做一個項目,我可以使用紅外遙控器連接到我的電腦並控制它,因為我有一個連接到它的投影儀,我想要一個遙控器。 我已經弄清楚了所有紅外遙控的東西,也已經能夠將我的 Arduino UNO 配置為 HID 鍵盤(我知道 HID 設備有比 Arduino UNO 更好的解決方案,但我想要這個設置的方式使它成為可能,所以我必須使用 UNO)。 但是,當我嘗試向我的 PC 發送按鍵輸入時,它的行為就像按下控制按鈕一樣(例如,如果我在按下遙控器上的按鈕后按下實際鍵盤上的 A,它會選擇我當前所在頁面上的所有內容)。 我嘗試了一堆不同的鍵碼並查看了其他人的代碼,但找不到我哪里出錯了這里是我目前為我的項目編寫的代碼:

#include <IRremote.hpp>
#include <HID.h>     
#include <IRremote.h> 

int RECV_PIN = 7;
uint8_t buf[8] = { 0 };    

void setup() {     
  Serial.begin(9600);     
  IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);  

  delay(200); 
}

void loop(){ 
  if (IrReceiver.decode()) {
    int i;
    int command = IrReceiver.decodedIRData.command;
    IrReceiver.stop();  
    switch (command) {
      case 70:
        Serial.println("Volume +");
        buf[2] = 0x80;
        Serial.write(buf, 8);
        break;
      /* 
         There are a bunch more case statements with different IR commands that 
         correlate to functions I want the remote to do
      */

    }
    releaseKey();
    delay(500);
    IrReceiver.start(8000);
    IrReceiver.resume();
  }
}

void releaseKey() {
  buf[0] = 0;
  buf[2] = 0;
  Serial.write(buf, 8);
}

刪除打印“Volume +”的行是解決方案。 這顯然不是 HID 固件的有效命令。 請記住始終將您的代碼簡化為最簡單的東西,它應該可以工作但不能工作,這樣您就可以自己解決這樣的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM