Arduino程式發送按鍵訊號
發送按鈕似乎可以用 Arduino 的 MouseKeyboard lib 但沒實做過。這裏參考 Arduino Uno Keyboard 的 程式 ,因我想要發送 Ctrl + Alt + Del 鍵,程式碼如下
#define KEY_LEFT_ALT_CTRL 0x05 /* ctrl 是 0x1, alt 是 0x4 */
#define KEY_DEL 76
uint8_t buf[8] = { 0 }; /* Keyboard report buffer */
Serial.begin(115200);
buf[0] = KEY_LEFT_ALT_CTRL; /* Ctrl + Alt 鍵*/
buf[2] = KEY_DEL; /* Del 鍵 */
Serial.write(buf, 8);
按鍵的代碼可參考 Hut1_12v2.pdf
Arduino DFU mode
因 Arduino 的USB埠,預設狀態下只能接收資料,不能發送資料出去,因此需要更新 Atmega8u2 韌體,讓 Arduino USB 變成一個USB 鍵盤。而讓Arduino進去DFU mode,才能燒錄新韌體。
- 下載燒錄軟體
到 ATMEL網站下載FLIP 軟體,接著參考 如何讓 Arduino Uno 進入 DFU mode,讓 Arduino 進入DFU模式。
在剛才的下載的程式裏,有韌體程式,或者到這裏下載,其中會用到2隻程式
- Arduino-keyboard-0.3.hex - 燒錄此程式會讓 USB 埠變成一個 USB 鍵盤
- Arduino-usbserial-uno.hex - 此程式是 Arduino 原本的模式,燒錄此程式就可回到原來的狀態
- 進入 DFU mode
- 燒錄USB鍵盤模式韌體
接著拔掉 Arduino 電源,就會取消 DFU 模式,再接上電後,Arduino 就會變成一個 USB 鍵盤,發送 Ctrl + Alt + Del 按鍵給電腦。
當你想修改 Arduino 程式重新上傳時,由於這個 Arduino 的USB 是一個USB 鍵盤,無法把程式傳進去,所以必須再進入 DFU 模式,把 Arduino-usbserial-uno.hex 燒錄進去,然後才能再上傳程式。