2015年12月15日 星期二

DIY實用PPT簡報控制器使用Arduino Pro Micro控制

朋友工作需要, 希望能有個PPT簡報控制器, 雖然市售有一大堆, 但是我們要發揮土炮的DIY精神, 配合Arduino自造者神器, 結果再次證明Arduion果然是威力強大啊...

找出用不到的315M遙控器, 把其中一顆按鈕改成激光頭(Laser)的控制按鈕, 其餘三顆分別為:上一頁, 下一頁, 全螢幕播放簡報+從重開始



左邊的12V升壓板是給上面那個遙控器電路用的, 激光頭本來是用5V, 改成和遙控器一樣的電源12V, 因電壓升高, 所以激光頭的電阻要改一下, 不然激光頭很燙, 會不會燒掉, 我不知道

18650鋰電池是用一顆2.6A的, 所以充飽一次電, 應該是可以用很久....很久...很久...

電腦這邊是315M的接收模組, 搭配遙控器的, Arduino控制板則是用Pro Micro, 用pro micro是因為它很小

程式碼如下

boolean RA_Key, RB_Key, RD_Key;
unsigned char Button_Times = 0xFF;
unsigned char Last_Button_Times = Button_Times;
char Bnumber=0;

void setup() {
  pinMode(17, OUTPUT);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(5, INPUT);
  Serial.begin(9600);
  //while(!Serial) ;
  Keyboard.begin();
  Serial.println("The program start up...");
}

void loop() {

 RA_Key=digitalRead(2);
 RB_Key=digitalRead(3);
 RD_Key=digitalRead(5);
 if(RA_Key) {
    delay(10);
    Bnumber=1;Button_Times=0x01; }  
  else if(RB_Key) {
    delay(10);
    Bnumber=2;Button_Times=0x02; }
  else if(RD_Key) {
    delay(10);
    Bnumber=3;Button_Times=0x03; }
  else {
    delay(10);
    Bnumber=99;Button_Times=0xFF;
    digitalWrite(17, HIGH); //low active
    }
   
  if(Button_Times != Last_Button_Times) {
    Last_Button_Times=Button_Times;
    switch(Bnumber) {
      case 1:
        digitalWrite(17, LOW); //low active
        Keyboard.press(KEY_RIGHT_ARROW);
        delay(10);
        Keyboard.releaseAll();
        break;
      case 2:
        digitalWrite(17, LOW); //low active
        Keyboard.press(KEY_LEFT_ARROW);
        delay(10);
        Keyboard.releaseAll();
        break;
      case 3:
        digitalWrite(17, LOW); //low active
        Keyboard.press(KEY_LEFT_SHIFT);
        Keyboard.press(KEY_F5);
        delay(10);
        Keyboard.releaseAll();
        Keyboard.press(KEY_HOME);
        delay(10);
        Keyboard.releaseAll();
        break;
      }
    }
 
}

實際動作影片

2 則留言:

  1. 厲害:P
    最近有個spotlight的簡報筆
    不知道能不能DIY製作出類似功能?

    回覆刪除
    回覆
    1. 剛看了spotlight, 它需要軟體配合才能實現, 單純想用arduino micro做出來是不太可能, 但是如果你自己寫window程式倒是有可能, 用快速鍵做對應

      刪除

歡迎大家來討論交流一下~~~