承上篇,這次我們來做個 Arduino 滑鼠自動點擊器。
接線
我們用個可變電阻來調整滑鼠點擊的速度:
- 可變電阻中間腳位接到類比輸入 (Analog Input) pin3,剩下的兩支腳位,一支接到 5V,另外一支接到 GND
程式
打開 Arduino IDE,載入底下的程式並上傳到 Arduino 板子,然後把 Arduino 切到 DFU mode,用 FLIP 把 Arduino-mouse-0.1.hex 燒錄到 atmega8u2 晶片上,然後重新插拔 Arduino 的電源,這樣 Arduino 滑鼠自動點擊器就完成了 。
示範影片
Arduino 會根據可變電阻的讀值調整滑鼠點擊的速度:
Sorry,手邊沒有 buzzer,不然滑鼠點擊的時候如果可以同時「嗶」一聲會比較有感覺 。
參考資料
- Arduino Uno Mouse
- DIY 滑鼠自動點擊器 - 使用 555 Timer
你好!!
回覆刪除我有幾個程式碼問題想請教前輩
1.
請問小括號內東西的代表什麼意思?
#define LEFT_BUTTON (1 << 0)
#define MIDDLE_BUTTON (1 << 1)
#define RIGHT_BUTTON (1 << 2)
2.
若要改成 連點右鍵是否修改
mouseReport.buttons = LEFT_BUTTON;
為
mouseReport.buttons = RIGHT_BUTTON;
謝謝^^
Hi,
回覆刪除<< 是 Left Shift operator,也就是左移位元運算子
1 << 1; // 這行會把 1 左移 1 個位元
// 1 的二進位是 00000001
// 左移 1 個位元後會變成 00000010
1 << 2; // 這行會把 1 左移 2 個位元
// 1 的二進位是 00000001
// 左移 2 個位元後會變成 00000100
1 << 0; // 左移 0 個位元,其實沒有什麼作用,1 還是 1
1 << 0; // 這行會把 1 左移 0 個位元
是的,如果要連點右健,就改成:
回覆刪除mouseReport.buttons = RIGHT_BUTTON;
不過不一定每隻滑鼠都一樣喔,因為如果是兩鍵的滑鼠,行為可能會不一樣,可能要用:
mouseReport.buttons = MIDDLE_BUTTON
感謝你這麼快的回覆@@
回覆刪除那麼請問為何要這樣定義三個按鍵做Shift!?
若我想要修改變成連點右鍵跟這些有關係嗎?
哈,因為我剛好在線上
回覆刪除這跟 USB Mouse Report 有關,請參考底下這篇最後面那張表格:
http://coopermaa2nd.blogspot.com/2011/11/arduino-uno-mouse.html
Mouse Report 定義了 USB 滑鼠跟電腦之間傳輸的封包格式,
所以必須照著 Mouse Report 的格式填寫資料。
感謝你的回覆^^
回覆刪除我剛剛以我的滑鼠測試時
mouseReport.buttons = MIDDLE_BUTTON
是連點右鍵
mouseReport.buttons = RIGHT_BUTTON;
是連點滾輪
測試兩次了的確有點詭異,是不是硬體本身不同,而造成的結果呢?
我的滑鼠有左右滾輪三鍵
USB Mouse Report 第一個 BYTE 是滑鼠 Button 的狀態
回覆刪除一個 BYTE 有 8 個 bits
其實 USB 規格並沒有說哪個位元是左鍵、右鍵和滾輪鍵...
規格上只寫說 Button 1, 2, 3, 4 ... 這樣子
所以我想實際狀況可能不是每支滑鼠都相同的