2012/12/16

Arduino UNO R3 的第一次

偶然的情況下看到一網路廣告, 認識了 Arduino .

"Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments."
節錄於 http://www.arduino.cc

被他的宗旨吸引...
第一片Arduino UNO由原廠在台灣的代理商取得, 因為Arduino UNO模擬 USB Serial 介面的 Atmega16U2是可再程式化, 並可將它程式化為 HID Keyboard Device, 於是一個想到的應用利用這個功能實現了.

使用Arduino的程式開發環境編譯及上傳至 Mega328.

鍵盤模擬程式的範例:
#define KEY_A 0x04
long currentMillis = 0;
unsigned long fun1_Millis = 0;
unsigned long temp_fun_Millis =0;
unsigned long interval_fun1 = 180000; // 180 sec
uint8_t buf[8] = { 0 }; /* Keyboard report buffer */
void setup(){
  Serial.begin(9600);
  delay(2000);
  Send_key(1500, KEY_A);
}
void loop(){
  fun1_Millis = Fun_Check(fun1_Millis, interval_fun1, 1000, KEY_A);
}
void Send_key(int dtime, uint8_t KEY){
  buf[2] = KEY;
  Serial.write(buf, 8); // Send keystroke
  delay(dtime);
  Release_Key();
}
long Fun_Check(unsigned long fun_Millis, unsigned long interval_fun, int time_d, uint8_t KEY) {
  long temp_fun_Millis = 0;
  currentMillis = millis();
  temp_fun_Millis = fun_Millis;
  if(currentMillis - fun_Millis > interval_fun ) {
    temp_fun_Millis = currentMillis;
    buf[2] = KEY;
    Serial.write(buf, 8); // Send keystroke
    delay(time_d);
    Release_Key();
  }
  return temp_fun_Millis;
}

其中使用的鍵盤字元對照表可由 USB HID table 資料找到.

完成程式上傳後再使用 Atmel 的 flip 進行 Atmega16U2 的程式變更, 將 USB Serial port 轉成 HID Keyborad Drvice.

步驟:
1. Reset Arduino 上的 Atmega16U2 , 進入 DFU (Device Firmware Update)模式.
2. 以 Flip程式館將 arduino-keyborad-0.3.hex 上傳.

完成後將Arduino接上電腦, 於是一USB鍵盤模擬產生, 並會於設定的時間送出所要的按鍵 "a".
....

FLIP 取得 www.atmel.com/tools/FLIP.aspx

沒有留言:

張貼留言