close

HID1K1-01.png

USB HID Test 01 : Keyboard-1 Hello World

啟稿: 2018/04/19

完稿: 2018/04/20

 

測試需求

輸入裝置是所有控制器的必備周邊裝置,如果您可以將任何按鈕,操縱桿,傳感器或其他電子元件都可變成任意大小功能的USB鍵盤或鼠標,甚至您可以將您想要的任何輸入設備製作成您的電腦程序或遊戲的控制器;另外當你需要USB鍵盤,若你又希望同時要有搖桿能使用,那麼你除了多使用一個USB孔位加上一個USB搖桿外沒有其他選擇,所以最好的方法是自行設計一款微型化適合需求大小又同時支援USB鍵盤及USB搖桿的專屬品,這對每個maker來說就幫助非常大。所以在此利用Arduino ProMicro先測試USB HID Keyboard

材料與工具

需要如下所列的材料:

  • Arduino ProMicro                                                      x1
  • 單心電線                                                    x1
  • 單鍵按鈕                                                    x1 (Option)
  • 電路麵包板                                                x1 (Option)

基本知識

測試USB HID Keyboard可獲得基本的知識如下:

  • 有Arduino ProMicro USB HID寫作的知識
  • Keyboard運作的知識

1.Arduino ProMicro

Pro Micro是一款小巧的Arduino兼容微控制器,以ATmega32U4為中心 - 一款非常類似於ATmega3288AVR,但32U4配備了全速USB收發器。所以當你連接Arduino到你的電腦時, Pro Micro可以通過編程仿真任何您可以想像的USB設備。您甚至可以將其編程為鼠標、鍵盤或其他HIDUSB設備一樣操作

在此沒有使用Arduino Nano來進行USB HID Keyboard實驗是因為採用Nano需要換FW才能模擬USB HID裝置,使用Pro Micro好處就是只要有#include "Keyboard.h"Pro Micro就會自動切換你的USB HID驅動FW,進行開發測試都相當方便。至於如何用Arduino Nano來進行USB HID Keyboard實驗我將在另一篇再做說明。

2.USB HID

至於HID是甚麼它是人機介面設備Human Interface Device縮寫,為許多USB定義的裝置類別之一。每個USB設備都分配了一個裝置類別,它定義了其通用目的。現有很多類別:如印表機、揚聲器和網路攝影機等等;但本測試專門研究HID,所以在此不考慮其他類別,而是解釋如何使用Arduino HID庫,以便充分利用Pro Micro

3.Arduino HID Library

基本上,若你要模擬一般USB鍵盤,主要需要了解函式庫一個功能Keyboard.write()

Keyboard.write(char)這個功能將透過USB送出一個單一字元,傳送字元可以以任何種傳輸標準,如ASCII定義字元:0-9a-zA-Z、空白、符號等。

測試過程

Arduino內所附的四個USB Keyboard的範例都略有些複雜,並不適合還沒有基礎慨念的初學者,所以在此將它簡化為以下一個最直接的例子是將一個按鈕綁定到一個輸入引腳。如果你有一個按鈕,將一端連接到2針,另一端接地如下圖。或者,如果您沒有按鈕,測試時只要使用導線將引腳2短接到地就可

HID1K1-02.png

範例程式如下:

 

#include "Keyboard.h"

int buttonPin = 2; 

 

void setup() {

  pinMode(buttonPin, INPUT_PULLUP);

  Keyboard.begin();

}

 

void loop()

{

  if (digitalRead(buttonPin) == LOW)  // if the button goes low

  {

    Keyboard.write('z');  // send a 'z' to the computer via Keyboard HID

    delay(1000);  // delay so there aren't a kajillion z's

  }

}

當引腳2接地或你按下按鈕時,您的計算機應該收到'z'字符。你可以打開的應用程序如Notepad記事本,您的Notepad應該收到'z'字符。

注意其中有一行delay(1000)也很重要。雖然其中的1000是任意的,但此delay()並不是隨意加入。試著長按延遲一下,你的電腦會嘗試捕捉一些zzzzzzzzzzzz)。所以說您必須注意您發送給計算機的內容以及速度和頻率

後記

對於多個按鍵的情況,按鍵的配置與控制的方法就不一樣,所以後續我們將測試多個按鍵的控制。

本文為個人學習的經驗,後續有所改進將再發文分享;本人因工作因素發文後並不會經常檢視讀者問題,對於沒法及時回覆問題敬請見諒!

若覺本文對讀者有所幫助,可回覆感想及你的分享!謝謝!

arrow
arrow
    文章標籤
    arduino HID US
    全站熱搜
    創作者介紹
    創作者 Philip4G 的頭像
    Philip4G

    Philip4G四眼仙機的部落格

    Philip4G 發表在 痞客邦 留言(0) 人氣()