2011年11月27日 星期日

Arduino Uno Mouse

這次我們將使用 darran 所寫的 Arduino UNO MouseHID 讓 Arduino 變身成電腦滑鼠。我假設你已經知道如何更新 atmega8u2 的韌體,相關文章請參考「如何讓 Arduino Uno 進入 DFU mode」跟「如何用 FLIP 更新 Atmega8u2 的韌體 」。

準備設備

你需要一張 Arduino Uno 或是 Mega 2560 的板子,還有一條單蕊線:

image
▲ 用單蕊線主要目的是把 Arduino 切到 DFU mode

下載

請連到底下的網址取得 Arduino Uno Mouse HID:

http://goo.gl/RvNvP

下載解壓縮後,把 Arduino-mouse 資料夾放到 Arduino 速寫簿 (Sketchbook) 資料夾底下。Arduino 速寫簿 (Sketchbook) 資料夾的預設位置是在「我的文件 > Arduino」這個地方。

Arduino-mouse 資料夾的內容如下:

image

編譯與執行

1) 打開 Arduino IDE, 載入 "File > Sketchbook > Arduino-mouse> Square" 然後把程式上傳到 Arduino 板子上:

image

底下是 Square 範例的完整程式碼:

2) 把 Arduino 切到 DFU mode,用 FLIP 把 Arduino-mouse-0.1.hex 燒錄到 atmega8u2 晶片上,然後重新插拔 Arduino 的電源。這時候「裝置管理員」視窗裏會多出一個「USB 人性化介面裝置」:

image_thumb5

同時你會發現螢幕上的滑鼠會自己移動,每隔兩秒鐘以順時針方向畫出一個正方形。

示範影片
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作業系統下游標好像不會畫方塊,

coopermaa 提到...

不會畫方塊?那會動嗎?
我系統是 Win XP,明天我用同事的電腦試試看。

芭蕉葉上聽雨聲 提到...

游標會跑到右下角落, 然後胡亂CLICK, 讓我的桌面都亂掉了.
呵~~~~有點慘...

coopermaa 提到...

咦? 會不會跟 Win7 的 HID driver 衝到了?

Unknown 提到...

我在WIN7平台 沒有問題唷^^!!

我比較想問的是,之後沒要玩這個滑鼠程式時,是否要將原HEX資料燒回來@@?

coopermaa 提到...

Hi Unknown, 謝謝你幫我測試。
是的,不玩的時候,記得要把 Arduino-usbserial-uno.hex 燒回來,不然 Arduino 會跟你的滑鼠搶游標。