なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

Arduinoで遊ぼう - Arduino Leonardoで自動でつぶやく

Posted by arms22 on 2012年06月18日 4  0

IMGP2528

思いがけず Arduino Leonardo を入手したので遊んでみたよ。

とりあえず1番試したかったUSB機能を使ってLeonardoにキーボードのフリをさせてみた。ただ単純に「ボタンを押したらノートパッドに'a'と入力」じゃつまらないので、ツイッターのWebページから自動でつぶやかせてみたよ。やってる事は'a'って入力するのと対して変わらないけどね ;p

サンプルスケッチ



// ボタンの端子番号
const int buttonPin = 11;
// 前回のボタンの状態
int previousButtonState = HIGH;

void setup() {
  // ボタンの端子を入力、内蔵プルアップ有効
  pinMode(buttonPin, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  // ボタンの状態を読み取る
  int buttonState = digitalRead(buttonPin);

  // 前回の状態と比較して、違っていたらかつLOWなら
  if(previousButtonState != buttonState &&
    buttonState == LOW){
    // ツイート作成
    Keyboard.print("n");
    // ウィンドウが開くのを待つ
    delay(1000);
    // つぶやきを入力
    Keyboard.print("Hello World, I'm Arduino Leonardo.");
    // ツイートボタンにフォーカスを移動
    Keyboard.write(KEY_TAB);
    // ツイート!
    Keyboard.write(KEY_RETURN);
  }

  // ボタンの状態を更新
  previousButtonState = buttonState;
  delay(10);
}

まず前提条件としてログインした状態でツイッターのWebページを開く。タイムラインが表示されている状態で11番端子につないだボタンを押すと「Hello World, I'm Arduino Leonardo.」とつぶやきます↓。

Leonardoからつぶやく

やってること単純。ツイッターのWebページではキーボードのショートカット機能が使えるから、
  1. "n"キーを押してツイート作成画面を開く
  2. メッセージを入力
  3. リンクフォーカスをツイートボタンに移す
  4. つぶやく!
そんだけ。
KEY_TAB とか KEY_RETURN など非ASCIIのキーコードは下記URL「Keyboard Modifiers」に一覧が掲載されている。F1とか入力させたい場合は、
Keyboard.write(KEY_F1)
と書けばよい。

このスケッチはうまく動いてくれたけど1点気になることがある。僕のLeonardoはスケッチのアップロードに毎回失敗する。今のところ自動リセットがかかる気配はなし。Arduino Leonardoへのガイドにもアップロードに失敗する場合があるという記述があったけど毎回失敗することはないと思うんだけどなぁ。今はリセットボタンを押したままアップロードを開始し「書き込んでいます」というメッセージが表示されたらリセットボタンを離す手順で回避している。

Arduino - Mouse and Keyboard libraries
http://arduino.cc/en/Reference/MouseKeyboard

Arduino - Keyboard Modifiers
http://arduino.cc/en/Reference/KeyboardModifiers


関連URL


Arduino Leonardoへのガイド
http://trac.switch-science.com/wiki/Guide/ArduinoLeonardo

【武蔵野電波のプロトタイパーズ】ますます楽しくなった、新しいArduino
http://pc.watch.impress.co.jp/docs/column/musashino_proto/20120614_539970.html



Arduino Cookbook
Arduino Cookbook
posted with amazlet at 12.06.17
Michael Margolis
Oreilly & Associates Inc
売り上げランキング: 10448

Ads by Google

4 Comments

きぃたん says..."アップロード"
>今のところ自動リセットがかかる気配はなし。
HIDもローダーもUSBを使っているので
リセットを押し続けないと切り換えができませんよね

私のはダビンチにleonardoを入れていますが
同じ方法でアップロードしています。
2012.06.18 14:16 | URL | #mQop/nM. [edit]
arms22 says..."Re: アップロード"
「オートリセットはパソコンがLeonardoのシリアルポートを1200bpsで開いた後に閉じる事によって実行されます。」ってガイドには書かれてるけどリセットされてないっぽいですね。
なんか他にも条件があるのかな。
2012.06.18 14:29 | URL | #- [edit]
きぃたん says..."アップロード"
1200bpsで開くとHIDから仮想ポートに切り替わりますね
2012.06.18 18:10 | URL | #mQop/nM. [edit]
arms22 says..."Re: アップロード"
CDC.cpp に 1200bps だったらリセットするみたいなコードを発見しました!
2012.06.18 19:20 | URL | #- [edit]

Leave a reply






管理者にだけ表示を許可する

該当の記事は見つかりませんでした。