繼實做USB鍵盤之後,今天我們繼續來改寫程式變成USB HID搖桿
上次連結
這種複雜度的電路之前看到很多談到wii改機的部落格都說就算不是讀電子相關科系的人都可以做。
今天我們還是一樣使用Atmel的AVR Tiny45配上EasyLogger的範例來改。不過我更簡化了一點電路,整個做好的成品就只有上面的照片那樣而已。詳細電路圖和相關開發工具請參考上一次的介紹。
跟現實生活一樣位處越高層的長官要懂的東西越少以免大腦爆炸,我們如果只是要實做出一個USB搖桿就不用管太多細節。以後我們慢慢往下層走時會講到越來越多的細節。今天要修改的部份還是如第一次所說,使用HID descriptor tool建立如下的表格。
工具自動產生的程式碼就像下面那樣。有一點要特別注意:所有REPORT_SIZE乘上REPORT_COUNT的總和一定要是8的倍數,不然會因為組不成完整的Byte而讓PC端發生錯誤。
PROGMEM char usbHidReportDescriptor[USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x08, // USAGE_MAXIMUM (Button 8)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
0x55, 0x00, // UNIT_EXPONENT (0)
0x65, 0x00, // UNIT (None)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0 // END_COLLECTION
};
//
//
下面的影片是從windows控制台截取來的
今天的完整程式在這