Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

ATtiny85 を使った 「Tiny (ボトルキャップ) 蓄音機」

Mira f:id:miraluna:20180127173159j:plain:w30

さて、これはなんでしょう?
f:id:miraluna:20180204164026j:plain:w300






中から音楽が聞こえてくるわ。
f:id:miraluna:20180204163958j:plain:w350











ちっちゃな蓄音機!
f:id:miraluna:20180204164053j:plain:w400


仮の実装だけどね。ボトルキャップに入れています。

ATtiny85というマイクロコンピュータを使って電子オルゴールを作ってみたの。

蓋の裏に付いているのが圧電ブザーという音を出す部品です。

中の黒い箱みたいのがマイコンのATtiny85。

動作を安定させるために電解コンデンサ(左手前の円柱型の部品)を付けて、スイッチ(コンデンサの奥)で電源をONOFFできる。



これの面白いところは小さいところと、自分で好きな音を入れられるところね。

音の高さと速さを自由にプログラムできるの。

だから自分で簡単な曲を作曲しても面白いわね。



〇プログラム ↓

// Akogare
int melody[] = {
330,440,523, 659,523,440, 587,494,392, 523,494,440,330,
440,494,523, 330,523,330, 494,294,494,294, 440,262,165,220, //音階の周波数
};
int durations[] = {
16,16,16, 8,16,16, 8,16,16, 16,16,16,8, //13
16,16,8,16,16,16, 16,16,16,16, 16,16,16,8, //14 音符の長さ
};
void setup() {
}
void loop() {
for(int note = 0; note < 27; note++){ //音符の合計
int noteDuration = 5000 / durations[note]; //数字が長いほどゆっくり
tone(3, melody[note], noteDuration); //D3ピンから出力
int note_hazama = noteDuration * 1.05; /*音を出している時にマイコンが待機する長さ。ここでは「音符×1.05」なので、音と音の間にわずかな「間」があるわ。*/
delay(note_hazama);
}
delay(0); //リピート時の尻尾と頭の「間」の長さ
}

※ 2021.1.4.修正(『[』と『]』が表示されてなかったの。)


・リピート
 void loop内にプログラムを書けば、繰り返し音楽が流れる。
 void setup内にプログラムを書けば、一度だけ流れて止まる。

・和音
 和音は基本的に一つのブザーでは出せないわ。
 それっぽくする方法はいくつかあって、
 ・複数の周波数の間をとる。
 ・短い装飾音を入れて和音っぽくする。
 ・複数の周波数を短く繰り返す(これはやったことないから疑わしいわ)。

 どうしても和音を出す必要がある場合には、ブザーを複数使えばできる。



試聴はこちら↓


Tiny 蓄音機「あこがれ」




ケースの中身の様子と配線図については別の記事で紹介します。
 ↓ こちらの記事
miraluna.hatenablog.com


ふたを開くとメロディが流れるTiny蓄音機については ←こちら

ATtiny85にスケッチを書き込む方法については ←ここから
8pin ATtiny書込みシールドの記事は ←ここから