Arduinoで遊ぼう - Arduino Leonardoで自動でつぶやく
Posted by arms22 on 2012年06月18日

思いがけず 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.」とつぶやきます↓。

やってること単純。ツイッターのWebページではキーボードのショートカット機能が使えるから、
- "n"キーを押してツイート作成画面を開く
- メッセージを入力
- リンクフォーカスをツイートボタンに移す
- つぶやく!
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
posted with amazlet at 12.06.17
Michael Margolis
Oreilly & Associates Inc
売り上げランキング: 10448
Oreilly & Associates Inc
売り上げランキング: 10448
Ads by Google
4 Comments
>今のところ自動リセットがかかる気配はなし。
HIDもローダーもUSBを使っているので
リセットを押し続けないと切り換えができませんよね
私のはダビンチにleonardoを入れていますが
同じ方法でアップロードしています。
HIDもローダーもUSBを使っているので
リセットを押し続けないと切り換えができませんよね
私のはダビンチにleonardoを入れていますが
同じ方法でアップロードしています。
「オートリセットはパソコンがLeonardoのシリアルポートを1200bpsで開いた後に閉じる事によって実行されます。」ってガイドには書かれてるけどリセットされてないっぽいですね。
なんか他にも条件があるのかな。
なんか他にも条件があるのかな。
1200bpsで開くとHIDから仮想ポートに切り替わりますね
CDC.cpp に 1200bps だったらリセットするみたいなコードを発見しました!
Leave a reply
該当の記事は見つかりませんでした。