電子工作

Tumblr廃人リモコン

  • 閲覧数: 12518
  • 37

作品画像

  • C.120x80.0dc81eb50ae7c3f5a9e653616ca93d76
  • C.120x80.b4c20475b685ecfdb0b932c575caa7f6

作品説明

概要 
たくさんのテキスト・画像・動画が流れるTumblr。フォローしているヒトの投稿をTwitterのTLのように読めるのがTumblrにおけるDashboardです。このDashboard上で気に入った投稿に「スキ!(❤のボタン)」や「リブログ(円環矢印のボタン、Twitterで言うところのRTのようなもの)」といったアクションを起こせます。

これらアクションにはショートカットキーが与えられており、キーボードから一発でそのアクションを起こせます。

しかし、実際に起こすアクションは「上下スクロール」「スキ!」「リブログ」の3種類が主であり、キーボードに手を伸ばすことさえ億劫です。

そこで片手でそれらアクションを済ますことができるリモコンを作りました(^q^)

仕様
mbedによるキーボードエミュレーションを利用しています。
ぶっちゃけ回路的にはスイッチがいくつか付いてるだけです。

Tumblrにおけるショートカットキーに合わせて文字を入力するキーボードというのがその実態です。

・"J" : 次の投稿へスクロール
・"K" : 前の投稿へスクロール
・"L" : スキ!を付ける/外す
・Shift + "R" : 即リブログ (コメントとか投稿するブログとかの設定無しに)
・Shift + "E" : キューへ送る

リモコン外観

リモコン外観


[2012/11/14 19:53追記]
追加仕様
普段ChromeにAutoPagerize入れてひたすらdashboardを下へ下へと潜ってますが、prevPostButton ("J") と nextPostButton ("K") だけだと、めちゃくちゃ縦長の投稿がページ末にあるAutoPagerizeが作動しなくなる挙動が見受けられたので、モード切り替えスイッチつけて十字キーの↑と↓、あるいはマウスのホイールに相当する動作をprevPostButton と nextPostButton でできるように作り変える予定です。

あと、今は有線接続なので [スイッチ] - [mbed] 間を無線化しようと考えてます。

最後に、これ持っててチクチクして痛いのでクッションつけようと思います(´ω`)

レシピ

配線図と中のプログラムを載せます(´ω`)っ
プログラムはmbed.orgHandbook>>USBKeyboardをimportして書き換えました(´ω`)


配線図

配線図


//---------------------------------------------------------------
// main.cpp / mbed Project TumblrController
//---------------------------------------------------------------
#include "mbed.h"
#include "USBKeyboard.h"

DigitalOut prevPostLED(LED1);
DigitalOut nextPostLED(LED2);
DigitalOut reblogLED(LED3);
DigitalOut likeLED(LED4);

DigitalIn prevPostButton(p21);
DigitalIn nextPostButton(p22);
DigitalIn likeButton(p23);
DigitalIn reblogButton(p24);
DigitalIn queueButton(p25);

USBKeyboard keyboard;

int main() {
  while(1) {
    if(prevPostButton){
      wait(0.05);

      prevPostLED = 1;
      keyboard.printf("k");

      while(prevPostButton){
        wait(0.05);
      }

      prevPostLED = 0;
    }else if(nextPostButton){
      wait(0.05);
      
      nextPostLED = 1;
      keyboard.printf("j");

      while(nextPostButton){
        wait(0.05);
      }
      
      nextPostLED = 0;
    }else if(reblogButton){
      wait(0.05);
      
      reblogLED = 1;
      keyboard.keyCode('r', KEY_SHIFT);
      
      while(reblogButton){
        wait(0.05);
      }
      
      reblogLED = 0;
    }else if(queueButton){
      wait(0.05);
      reblogLED = 1;
      wait(0.05);
      reblogLED = 0;
      wait(0.05);
      reblogLED = 1;
      wait(0.05);
      reblogLED = 0;

      keyboard.keyCode('e', KEY_SHIFT);

      while(queueButton){
        reblogLED = 1;
        wait(0.1);
        reblogLED = 0;
        wait(0.1);
      }
    }else if(likeButton){
      wait(0.05);
      
      likeLED = 1;
      keyboard.printf("l");

      while(likeButton){
        wait(0.05);
      }
      
      likeLED = 0;
    }
  }
}

コメント (0件)

コメントはまだありません