3
2

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.

littleBitsAdvent Calendar 2016

Day 25

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

Last updated at Posted at 2016-12-25

この記事は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と経由で、インターネット上の何かの反応とも連携できるので面白そうです。

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

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?