Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
34
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@Shinichi-Ohki

[Arduino]部屋の灯りが消えたら自動でGet Wildを再生してGet Wild退勤する

https://twitter.com/kozeni_shkt/status/709743397196541953
http://www.b-ch.com/ttl/index.php?ttl_c=467
[iOS]部屋の灯りが消えたら自動でGet Wildを再生してGet Wild退勤する

一般のご家庭やオフィスにあったArduinoを使ってやってみました。
full.jpg

やりたいこと

  • ある程度暗くなったらGet Wildを再生する
  • 再生が始まったら、明るさの変化は無視する
  • しばらくしたら、また明るさの変化に反応するようにする(翌日再セットアップしなくてもよくする)
  • LEDを取り付け、だんだん暗くすることでエンディング感を出す

用意した物

作り方

  1. MP3プレイヤーシールドArduinoシールド用ピンソケットのセット(R3対応)をはんだ付けします。
  2. LEDに330Ωの抵抗(オレンジオレンジ茶金)をはんだ付けします。LEDには向きがありますが、抵抗はどちらに付けてもいいです。
  3. CdSに10kΩの抵抗(茶黒赤金)をはんだ付けします。CdSには向きがないので安心してください。

はんだ付けはこれだけです。

接続

  • Arduino UnoにMP3プレイヤーシールドを差し込みます。
  • LEDのカソード側(参考)をGNDに、アノード側を5番ピンに差し込みます。led.jpg
  • CdSをGNDとA0に、抵抗をA4に差し込みます。cds.jpg

  • GetWild.mp3が入ったmicroSDをMP3プレイヤーシールドに差し込みます。

スケッチ

Sparkfun-MP3-Player-Shield-Arduino-Libraryを使っているので、ダウンロードしてインストールしてください。

getwild.ino

#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)が出ないボードはだめそう。
34
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
34
Help us understand the problem. What is going on with this article?