1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CdSセルと2つのマイコンを使い、Youtubeの動画を再生する

Posted at

目的

寝る前のナイトルーティンとして、もこ田めめめちゃんの動画を再生することを日課にしていました。

しかしPCで動画を検索することさえできないほど疲れてしまう日もあったのでどうにかして自動化できないものかと考えました。

使用したもの

機器 リンク
Digispark https://www.amazon.co.jp/HiLetgo-Digispark-Kickstarter-ATTINY85-%E8%B6%85%E5%B0%8F%E5%9E%8BArduino%E4%BA%92%E6%8F%9B/dp/B07BJ2F2WZ
ArduinoNano(互換機) https://www.amazon.co.jp/keyestudio-Nano-ATmega328P-Arduino%E3%81%A8%E4%BA%92%E6%8F%9B-USB%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB/dp/B01FSDVZ98
CdSセル http://akizukidenshi.com/catalog/g/gI-00110/
1KΩ抵抗

上のリンク先にあるDigisparkのマイコンはキーボードやマウスの代わりとして動作し、今回はキー入力を自動化するために使いました。

これについての説明は他の方が詳しく説明してくれているので興味がある方は調べてみてください。

配線

Untitled Sketch_ブレッドボード.png

注意

写真上部のD7ピンから伸びている青い配線の先にDigisparkのD0ピンとつないでください。画像のインポートができず配線図に表すことができなかったため下の写真を参考にしてください。緑の配線がAruduinoNanoのD7ピンとDigisparkのD0ピンを繋いでいます。
動作をさせるにはDigisparkをPCのUSBコネクタに差し込んでください。
DSC_0031.JPG

プログラム

AruduinoNanoの互換機にこちらのプログラムを書き込みます。

auto_mememe.ino
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に、キーボードの制御をするプログラムを書き込んでいきます。

Auto_Key.ino
# 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では文字が一部変わってしまいます。先ほども上に記載したこちらにキーボード入力の置き換え表があったので参考にしました。

最後に

下の画像から動作している動画ページに飛べます。
電気を消した後にコマンド入力している様子が分かると思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?