目的
寝る前のナイトルーティンとして、もこ田めめめちゃんの動画を再生することを日課にしていました。
しかしPCで動画を検索することさえできないほど疲れてしまう日もあったのでどうにかして自動化できないものかと考えました。
使用したもの
上のリンク先にあるDigisparkのマイコンはキーボードやマウスの代わりとして動作し、今回はキー入力を自動化するために使いました。
これについての説明は他の方が詳しく説明してくれているので興味がある方は調べてみてください。
配線
注意
写真上部のD7ピンから伸びている青い配線の先にDigisparkのD0ピンとつないでください。画像のインポートができず配線図に表すことができなかったため下の写真を参考にしてください。緑の配線がAruduinoNanoのD7ピンとDigisparkのD0ピンを繋いでいます。
動作をさせるにはDigisparkをPCのUSBコネクタに差し込んでください。
プログラム
AruduinoNanoの互換機にこちらのプログラムを書き込みます。
int val=0; //入力される値を格納する為の変数
int pinD7 = 7;
void setup() {
Serial.begin(9800); //モニターに出力するための設定
pinMode(pinD7,OUTPUT);
}
void loop() {
//ANALOG INの0番ピンからデータを受け付ける
val=analogRead(0);
Serial.println(val); //入力された値をモニターに出力
if(val>999){
digitalWrite(pinD7,HIGH);//暗くなったら信号をD7ピンから送る
delay(100);
while(val > 999){
digitalWrite(pinD7,LOW);//再度明るくなるまでループ
val=analogRead(0);
delay(100);
}
}
else{
digitalWrite(pinD7,LOW);
}
delay(100);
}
私の環境では明るいところで930くらいの値が、暗いところでは1000以上の値が計測されたため、条件式をval>999にしています。この条件式の値は各自の環境で異なると思いますので、環境に合わせて工夫してみてください。
これによって部屋が暗くなったことを検知してDigisparkに信号を送ることができます。
続いて信号を受け取る側のDigisparkに、キーボードの制御をするプログラムを書き込んでいきます。
# include<DigiKeyboard.h>
int pin0 = 0;
int pin_now = 0;
void setup(){
pinMode(pin0,INPUT);
}
void loop(){
pin_now = digitalRead(pin0);//D0ピンの状態を取得
if(pin_now == 1){
DigiKeyboard.sendKeyStroke(0);//もし信号がきたらはじめにKey入力を初期化
DigiKeyboard.delay(100);
DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);//WindowsキーとRの同時押し
DigiKeyboard.delay(100);
DigiKeyboard.print("cmd");//コマンドプロンプトを指定
DigiKeyboard.delay(100);
DigiKeyboard.sendKeyStroke(KEY_ENTER);//コマンドプロンプトを起動
DigiKeyboard.delay(100);
DigiKeyboard.print("start https\'//www.youtube.com/watch?v_WtYgPZQBztk");//みたい動画のURLに移動するコマンド
DigiKeyboard.delay(100);
DigiKeyboard.sendKeyStroke(KEY_ENTER);//コマンドを実行
DigiKeyboard.delay(100);
}
}
このようにキーボードの制御を書いていきます。
プログラムの書き込みにはAruduinoの統合開発環境が使えますがDigisparkに書き込むにはひと工夫設定が必要です。こちらの記事を参考に設定をしました。
注意点
DigisparkのライブラリにはUSキーボードでの入力が設定されており、日本語環境のPCでは文字が一部変わってしまいます。先ほども上に記載したこちらにキーボード入力の置き換え表があったので参考にしました。