實驗目的
我們將做一個紅外線轉成按鍵敲擊動作 (keystroke) 的應用,我們把它稱之為 IR2Keystroke。IR2Keystroke 會用到 USBKeyboard Library,因此請參見 USBKeyboard Library 先把 library 安裝起來。
材料
- 麵包板 x 1
- Arduino 主板 x 1
- 38 kHz 紅外線接收器 (例如 TSOP2438,TSOP4438, PNA4602, FM-8038TM2-5DN) x 1
- 單蕊線 x N
接線
- 照下表連接 Arduino 跟紅外線接收器:
紅外線接收器接腳 Arduino 接腳 Vcc(+ 或 V+) +5V GND(-) GND Vout(或 OUT) pin 2。也可以接到其它 Digital pin,但程式要配合修改
▲ 有些紅外線接收器 GND 和 Vcc 是相反的,接線時請查閱你的 datasheet
安裝 IRRemote 函式庫
到 Ken Shirriff 的部落格或點這裏下載 IRRemote 函式庫,然後把檔案解壓縮放到 Arduino 速寫簿 (Sketchbook) 資料夾的 Libraries 資料夾底下即可。Arduino 速寫簿 (Sketchbook) 資料夾的預設位置是在「我的文件 > Arduino」這個地方:
▲ 把 IRRemote 資料夾放在「我的文件 > Arduino > Libraries」底下即可
程式
底下就是 IR2Keystroke 的程式:
打開 Arduino IDE,把程式上傳到 Arduino 板子上。接著把 Arduino 切到 DFU mode,用 FLIP 把 Arduino-keyboard-0.3.hex 燒錄到 atmega8u2 晶片上,然後重新插拔 Arduino 的電源。
這支程式的邏輯是這樣,程式裏定義了遙控器 left 和 right 鈕的紅外線 key code,在 loop() 中程式會不斷進行紅外線的解碼,假如有收到紅外線訊號,就檢查是否 left 鈕或 right 鈕,如果是 left 鈕就送出 PageDown 的 keystroke,如果是 right 鈕就送出 PageUp 的 keystroke。
這可以做什麼用呢?嗯,你可以利用這個方法做簡易的電腦遙控,例如操作相簿或電子書的翻頁,或者也可以把遙控器變成電腦遊戲的上下左右控制鍵,諸如此類的。
關於如何取得遙控器的 key code,請參考「IRRemote 紅外線遙控教學」這系列的教學。
示範影片
我的紅外線有收到訊號, 但是 Keyboard.sendKeyStroke(KEY_PAGEUP); 好像沒有作用, 我確定不是紅外線編碼的問題, 因為我把它改成只要收到搖控器訊號就執行Keyboard.sendStroke, 但都沒翻頁的動作, 請問原因?
回覆刪除Keyboard.sendKeyStroke(KEY_PAGEUP); 沒有作用?
回覆刪除你要不要試一下其它 keystroke,例如英文字母,先看看 Arduino 有沒有把 keystroke 送到電腦。
可以了, 原來還得載入Arduino-keyboard-0.3.hex
回覆刪除我有時候也會忘了載入 Arduino-keyboard-0.3.hex,還納悶怎麼程式不會動。嗯,有必要在文章裏補一段載入 Arduino-keyboard-0.3.hex 的說明。
回覆刪除1.可以按紅外線搖控器上的方向鍵移動鼠標嗎?
回覆刪除2.可以按紅外線搖控器上的某一鍵代表按下滑鼠左鍵嗎?
應該可以,但是要用 Arduino Uno mouse:
回覆刪除http://coopermaa2nd.blogspot.com/2011/11/arduino-uno-mouse.html
我滑鼠自動點擊器這邊示範了按下滑鼠左鍵的方法,只要把它跟紅外線連接起來就可以了:
http://coopermaa2nd.blogspot.com/2011/11/arduino.html
至於用遙控器移動鼠的話,應該也不是問題,拿 Square 畫正方形這支程式來修改一下,把遙控器上下左右鍵 key code 定義出來,然後再定義按一下要讓滑鼠移動多少距離就可以了。
看樣子也可以把遊戲搖桿改裝成無線的了.
回覆刪除遊戲搖桿改裝成無線的?
回覆刪除你是說用 arduino 來改裝遊戲搖桿嗎?
這樣的話,遊戲搖桿會變成什麼樣?
在搖桿上加裝紅外線發射器讓它變成紅外線無線搖桿嗎?
哈,這樣是不是還要另一個接收紅外線的裝置才行?
請問一下 電路圖是用什麼軟體繪製的呢?
回覆刪除我是用 Fritzing 畫的,可以參考我之前寫的文章:
回覆刪除http://coopermaa2nd.blogspot.com/2011/01/fritzing-pcb.html
http://coopermaa2nd.blogspot.com/2011/02/fritzing-power-ground.html