😽
[Arduino]部屋の灯りが消えたら自動でGet Wildを再生してGet Wild退勤する
Zennのお試しでQiitaの記事 https://qiita.com/Shinichi-Ohki/items/1edbe910c8659b20b3fd を転載しました。
[iOS]部屋の灯りが消えたら自動でGet Wildを再生してGet Wild退勤する
一般のご家庭やオフィスにあったArduinoを使ってやってみました。
やりたいこと
- ある程度暗くなったらGet Wildを再生する
- 再生が始まったら、明るさの変化は無視する
- しばらくしたら、また明るさの変化に反応するようにする(翌日再セットアップしなくてもよくする)
- LEDを取り付け、だんだん暗くすることでエンディング感を出す
用意した物
- Arduinoをはじめようキット Arduino UnoとLEDと抵抗とCdS(光センサ)が入っています。
- MP3プレイヤーシールド
- Arduinoシールド用ピンソケットのセット(R3対応)
- microSDHC 4GBのものがあったので使いました。GetWildしか入れないので10MBくらいあればいいですが、他には何も入れないでください。
- スピーカー ステレオミニジャック出力があるのでそこにアンプ付きスピーカーをつなぐ方がいいと思います。
作り方
- MP3プレイヤーシールドに Arduinoシールド用ピンソケットのセット(R3対応)をはんだ付けします。
- LEDに330Ωの抵抗(オレンジオレンジ茶金)をはんだ付けします。LEDには向きがありますが、抵抗はどちらに付けてもいいです。
- CdSに10kΩの抵抗(茶黒赤金)をはんだ付けします。CdSには向きがないので安心してください。
はんだ付けはこれだけです。
接続
-
Arduino UnoにMP3プレイヤーシールドを差し込みます。
-
LEDのカソード側(参考)をGNDに、アノード側を5番ピンに差し込みます。
-
CdSをGNDとA0に、抵抗をA4に差し込みます。
-
GetWild.mp3が入ったmicroSDをMP3プレイヤーシールドに差し込みます。
スケッチ
Sparkfun-MP3-Player-Shield-Arduino-Libraryを使っているので、ダウンロードしてインストールしてください。
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>
SdFat sd;
SFEMP3Shield MP3player;
int lightValue = 0;
int mode = 0;
int ledValue = 0;
int intervalTime = 0;
int ledPin = 5;
int lightPin = A0;
int lightGND = 18;
void getWildandtough() {
MP3player.playTrack(1);
}
// the setup function runs once when you press reset or power the board
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(lightGND, OUTPUT);
digitalWrite(lightGND, HIGH);
Serial.begin(9600);
sd.begin(SD_SEL, SPI_HALF_SPEED);
MP3player.begin();
}
// the loop function runs over and over again forever
void loop() {
lightValue = analogRead(lightPin);
Serial.println(lightValue);
Serial.println(ledValue);
// 暗さが950を超えたら再生モードに移る
if (lightValue > 950 && mode == 0) {
mode = 1;
ledValue = 255;
getWildandtough();
}
// 再生モード時、だんだんLEDを暗くする
if (mode == 1) {
analogWrite(ledPin, ledValue);
if (ledValue > 0) {
ledValue -= 10;
} else {
ledValue = 0;
}
intervalTime += 1;
}
delay(1000);
// 再生開始から300秒経ったら通常モードに戻る
if (intervalTime > 300) {
intervalTime = 0;
mode = 0;
}
}
最後に
- getWildandtough()を読むとわかるように、microSDに入っている1曲目を再生しますので、GetWild以外を入れないことを強くお勧めします。
- LEDを印象深く光らせられたかなと思ったら、MP3プレイヤーシールドに電源LEDが載っていて結構明るく光るので、あまり意味なかったです。
- LEDが無理に曲がっていて5番ピンにつながっているのは、MP3プレイヤーシールドが使わなくてPWMが使えるのが5番ピンくらいしかなかったからです。
- MP3プレイヤーシールドの回路図をざっと見た感じ、ESP-WROOM-02 Arduino互換ボードなどの3.3V系Arduino互換ボードでも動作するんじゃないかと思います。ただ5V端子から5V(せめて3.3V)が出ないボードはだめそう。
Discussion