這次我們將使用 darran 所寫的 Arduino UNO MouseHID 讓 Arduino 變身成電腦滑鼠。我假設你已經知道如何更新 atmega8u2 的韌體,相關文章請參考「如何讓 Arduino Uno 進入 DFU mode」跟「如何用 FLIP 更新 Atmega8u2 的韌體 」。
準備設備
你需要一張 Arduino Uno 或是 Mega 2560 的板子,還有一條單蕊線:
▲ 用單蕊線主要目的是把 Arduino 切到 DFU mode
下載
請連到底下的網址取得 Arduino Uno Mouse HID:
下載解壓縮後,把 Arduino-mouse 資料夾放到 Arduino 速寫簿 (Sketchbook) 資料夾底下。Arduino 速寫簿 (Sketchbook) 資料夾的預設位置是在「我的文件 > Arduino」這個地方。
Arduino-mouse 資料夾的內容如下:
編譯與執行
1) 打開 Arduino IDE, 載入 "File > Sketchbook > Arduino-mouse> Square" 然後把程式上傳到 Arduino 板子上:
底下是 Square 範例的完整程式碼:
2) 把 Arduino 切到 DFU mode,用 FLIP 把 Arduino-mouse-0.1.hex 燒錄到 atmega8u2 晶片上,然後重新插拔 Arduino 的電源。這時候「裝置管理員」視窗裏會多出一個「USB 人性化介面裝置」:
同時你會發現螢幕上的滑鼠會自己移動,每隔兩秒鐘以順時針方向畫出一個正方形。
示範影片
Mouse Report
要讓 Arduino 把滑鼠移動和按鈕狀態傳給電腦端,必須把資訊包在底下的資料結構裏:
Byte | Description | |||
0 | 滑鼠 Button 狀態,1 on: Bit 0 – Left Button Bit 1 – Middle Button Bit 2 – Right Button | |||
1 | X 軸移動值: -127 to +128 | |||
2 | Y 軸移動值: -127 to +128 | |||
3 | 滾輪移動值 (尚未完成) |
6 意見:
我的測試是....在Win7作業系統下游標好像不會畫方塊,
不會畫方塊?那會動嗎?
我系統是 Win XP,明天我用同事的電腦試試看。
游標會跑到右下角落, 然後胡亂CLICK, 讓我的桌面都亂掉了.
呵~~~~有點慘...
咦? 會不會跟 Win7 的 HID driver 衝到了?
我在WIN7平台 沒有問題唷^^!!
我比較想問的是,之後沒要玩這個滑鼠程式時,是否要將原HEX資料燒回來@@?
Hi Unknown, 謝謝你幫我測試。
是的,不玩的時候,記得要把 Arduino-usbserial-uno.hex 燒回來,不然 Arduino 會跟你的滑鼠搶游標。
張貼留言