2017年02月14日

「けものスイッチ」をつくってみた

2017年冬に某アニメがヒットし、
ツイッター上などで
「すごーい」「たーのしー」などのコメントで埋め尽くされる現象がみられました。

かくいうわたしも立派なフレンズ。
(ええ。スマホアプリ版から遊んでましたとも!)
すぐに「すごーい」「たーのしー」としか言えなくなる程度に語彙力が低下しました。

そこで気づいたんです。
「すごーい」「たーのしー」
そうツイッターで伝えるだけなのに、キーボードを打つのがめんどうくさいのです。

「キーの数はそんなに要らない…」

幸いにも私は電子工作ができるフレンズなので
あふれ出る想いをすぐに発信できるデバイスをつくってみました。

名付けて、「けものスイッチ」!!
kemosw


材料は
leonardo
★Arduino Leonardo
●A000057
●販売価格:3,240円(税込)
●シリコンハウス2Fで好評販売中!


このArduino Leonardoが今回の開発のキモです。

UB-ARD03
★Arduino用 ユニバーサル基板
●UB-ARD03
●販売価格:355円(税込)
●シリコンハウス2Fで好評販売中!

★適当な大きさのタクタイルスイッチ各種



まずユニバーサル基板にタクタイルスイッチを配置します。
img001
ネコ科のフレンズでも使いやすいように肉球の配置にしてみました。
エルゴノミクスデザインってやつですね。

写真の黒いボタンは「すごーい」「たーのしー」と入力を行うボタン、
灰色のボタンはツイッター等で送信を行う送信キーです。

回路図は下記の通りですので、そのとおりに実装してみてください。
(プルアップ抵抗がないじゃないか、と思われる方もいらっしゃるとは思いますが、理由は後述します。)
img002

img003
だいぶごちゃっとしましたが、配線するとこうなりました。
回路図のとおりに結線されていれば大丈夫です。

配線したら、Arduino Leonardoにmicro USBケーブル経由でプログラムを書き込みます。

Arduino IDE上で以下のソースコードを打ち込んでくださいね。
開発環境が無い方はこちらから最新版をダウンロードしてインストールしてください。

//#ソースコード

//疑似キーボードを使うために必須。
#include

#define BTN1 8
#define BTN2 9
#define BTN3 10
#define BTN4 11
#define BTN5 12

//必要に応じてテキストを書き換えてください。
#define STR1 "sugo-i\n" //すごーい
#define STR2 "ta-nosi-\n" //たーのしー
#define STR3 "ahahahaha\n" //あはははは
#define STR4 "naniare\n" //なにあれ


//ボタンクラス

class BTN{
public:
BTN(int pin);
boolean OnPush();
private:
boolean flag;
int pinNo;
};

BTN::BTN(int pin){
flag = false;
pinNo = pin;
pinMode(pin,INPUT_PULLUP); //入力ピンは内蔵プルアップを使用
}

//ボタンの前回ポーリング時の状態を参照し、Onのタイミングを検知。
boolean BTN::OnPush(){
if(flag == true){
flag = digitalRead(pinNo);
return false;
}else{
if(digitalRead(pinNo)){
flag = digitalRead(pinNo);
return true;
}else{
flag = digitalRead(pinNo);
return false;
}
}
}

BTN myBTN1(BTN1);
BTN myBTN2(BTN2);
BTN myBTN3(BTN3);
BTN myBTN4(BTN4);
BTN myBTN5(BTN5);

void setup() {
//疑似キーボード開始
Keyboard.begin();
}

void loop() {

//ボタンイベント取得のためポーリング。

//ボタンが「押されたら」疑似キーボードからキー入力。
if(myBTN1.OnPush()){
Keyboard.println(STR1);
Keyboard.println(" ");
}

if(myBTN2.OnPush()){
Keyboard.println(STR2);
Keyboard.println(" ");
}

if(myBTN3.OnPush()){
Keyboard.println(STR3);
Keyboard.println(" ");
}

if(myBTN4.OnPush()){
Keyboard.println(STR4);
Keyboard.println(" ");
}

//送信ボタン。ツイッターだったら[Ctrl]+[ENTER]にバインド。
if(myBTN5.OnPush()){
Keyboard.press(KEY_LEFT_CTRL); //[Ctrl]を押しながら
Keyboard.write(KEY_RETURN); //[Enter]を入力
Keyboard.release(KEY_LEFT_CTRL);//[Ctrl]を離す
}

delay(100);

}

//#ソースコード終り


プログラムのポイントは
1.チップ内蔵プルアップ抵抗を利用し外付け部品を減らしたこと
2.Arduino Leonardoの疑似キーボード機能を使用したこと
です。

2.に関してはUNO等の、疑似キーボードが使えないボードではできませんので、
Leonardo等の『疑似キーボード機能が利用できるボード』をご使用ください。

使い方は、まずmicroUSB経由で今プログラムしたデバイスをPCにつなぎます。
そしてwindowsだったら[全角/半角]キーで日本語入力を選択してください。

ツイッターで使用する場合、ツイート入力欄をクリックして入力状態にします。

あとは心のまま、「たーのしー」「すごーい」とボタンを押しまくってください。
そして、迷わず送信ボタン(ツイッターの場合[Ctrl]+[Enter]にバインドしたボタン、作例では灰色のボタン)
を押しましょう!


ね、簡単でしょ!?

Arduino Leonardo上のプログラムを書き換えれば
「わーい」「おもしろーい」など好きなテキストを送信することも可能ですし、
疑似キーボードとしての機能を利用して、
つないでおくだけで一定時間ごとに「すごーい」「たーのしー」とツイートするデバイスにすることだってできます。

フレンズのみなさんは是非とも作ってみて、語彙力をどんどん低下させましょう!

<担当:木下>

通販ご希望の方は共立エレショップへどうぞ!
フィジカルコンピューティングモジュールArduino Leonardo
Arduino用ユニバーサル基板[RoHS] / UB-ARD03


トラックバックURL