search
LoginSignup
2

More than 5 years have passed since last update.

posted at

updated at

littleBits BLEモジュールとArduinoモジュールが歌うクリスマスソング(きよしこの夜)

この記事はlittleBits Advent Calendar 2016の25日目の記事です。

デジタルハイク社様にお願いして取り寄せまして、littleBits BLEモジュールを入手できたのでlittleBits BLEモジュールとArduinoモジュールにクリスマスソング(きよしこの夜)を歌ってもらいます。

image

littleBits BLEモジュールとは

littleBits BLEモジュールとは、先日発売された、スマホアプリからBLE経由でlittleBitsを操作できるモジュールです。

リリース記事としては以下が見つかりました(英文です)

littleBits BLEモジュールのアクティベート

ということで、早速アクティベートします。

image

相変わらず、可愛いパッケージ。

image

開封。

image

技適マークが刻印されています!

image

littleBits Androidアプリをインストールして。

image

安定の可愛いチュートリアル。

image

ログインします。

image

ID/PASSWORDはlittleBitsアカウントを入れます。

image

ログインできたらBit Controlsをクリック。

image

BluetoothをONにします。

image

BLEモジュールを接続して待ち状態にします。

image

そうすると、アプリ側のBLE認識画面にBLEモジュールが表示されます。

image

認識されるとグリーンのランプに!

image

あとはアプリ内でいろいろな操作が可能です!

image

このように、スマホシャッフルでオンになったり、スライダーで値がリアルタイムに変わったり、15と表示されているのはBLEモジュールに入ってきた値を表示します。直感的でいいですよね。

きよしこの夜のメロディをつくる

さて、早速。littleBits Arduinoモジュールからシンセスピーカーモジュールで音を鳴らす基礎のメモの知見を元に、きよしこの夜のメロディをつくりましょう。

まず、きよしこの夜の楽譜を探します。

きよしこの夜 - Wikipedia

Wikipediaを調べてみると、

image

楽譜が見つかりました。自分に合うものを探して、

arduino使い方:圧電スピーカでメロディを鳴らす

こちらの記事を元にArduinoの音階に置き換えます。(結局、音を聞きながら最後は根性で微調整した気がします :laughing:

SilentNight.ino
int tones[47]={392,440,392,330,392,440,392,330,587,587,494,523,523,392,
440,440,523,494,440,392,440,392,330,440,440,523,494,440,392,440,392,330,
587,587,698,587,494,523,659,523,392,330,392,349,294,262,0};

int currentTone = 0;
int currentPush = 0;

void setup() {
  pinMode(A0, INPUT);
}

void loop() {
  if( currentPush == 0 && digitalRead(A0) == HIGH ){
    tone(5,tones[currentTone]);  // 音を鳴らす
    currentTone++;  // 音階をすすめる
    if(currentTone>=47){
      currentTone = 0;
    }
    // Serial.println(currentTone);
    // Serial.println(tones[currentTone]);
    currentPush = 1;
  } else if( currentPush == 1 && digitalRead(A0) == LOW ){
    currentPush = 0;
  }

  delay(100);
}

順々に音が流れていくシンプルな仕組みで、リズム感は操作する人のセンスにかかっている仕様。

これをArduinoモジュールに書き込んで、

image

あとは、POWERモジュール→BLEモジュール→Arduinoモジュール→スピーカーとつなぎます。

image

BLEモジュールはボタンモードで操作して、あとはリズムよくタップします。

image

 ↓
 ↓
 ↓
 ↓

実際の動画です。→ 【初期Ver】littleBits BLEモジュールとArduinoモジュールが歌うクリスマスソング(きよしこの夜) - YouTube

私のリズム感が悪いのか、なんかつたない・・・?

いやいや、 Arduinoモジュールを動かすコードで同じ音が続いたときに、ところどころつまづいていますね。

image

楽譜上、同じ音が続いているときに、音が切れていないので、続いているように聞こえない(=ただの長音になってしまう)ようです。

ブラッシュアップ

ということで、続いているように聞こえるよう、無音を少しだけ入れるようにします。

SilentNightBrushUp.ino
int tones[47]={392,440,392,330,392,440,392,330,587,587,494,523,523,392,
440,440,523,494,440,392,440,392,330,440,440,523,494,440,392,440,392,330,
587,587,698,587,494,523,659,523,392,330,392,349,294,262,0};

int currentTone = 0;
int currentPush = 0;

void setup() {
  pinMode(A0, INPUT);
}

void loop() {
  if( currentPush == 0 && digitalRead(A0) == HIGH ){
    // 同じ音階のときに空きを作るため無音delay
    tone(5,0);  
    delay(50);  // 同じ音階のときに空きを作るため無音delay
    // 音を鳴らす
    tone(5,tones[currentTone]);
    // 音階をすすめる
    currentTone++;
    if(currentTone>=47){
      currentTone = 0;
    }
    // Serial.println(currentTone);
    // Serial.println(tones[currentTone]);
    currentPush = 1;
  } else if( currentPush == 1 && digitalRead(A0) == LOW ){
    currentPush = 0;
  }

  delay(100);
}

 ↓
 ↓
 ↓
 ↓

実際の動画です。→ 【完成】littleBits BLEモジュールとArduinoモジュールが歌うクリスマスソング(きよしこの夜) - YouTube

ちゃんと音の区切りにキレでて、続いているように聞こえるようになりました!

このように、曲を鳴らせられるくらいBLEモジュールのレスポンスはとてもよいので、アプリと連動させていろいろな反応をさせられると、littleBitsでの制作が一層楽しくなりそうですね。また、Arduinoモジュールを経由すれば、PCと経由で、インターネット上の何かの反応とも連携できるので面白そうです。

それでは、よきクリスマスを。

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
What you can do with signing up
2