EEPROMにメロディデータを作成して音を鳴らします
〔Arduinoの動かせ方入門に戻る〕
ここでは、EEPROMにメロディデータを2曲作成して、スイッチの切替えで曲を選択し鳴らしています。
尚、圧電スピーカ(圧電ブザー)でなく普通のスピーカを使ってメロディを鳴らす場合はこちらを参考にして下さい。
この画面が配線図です。
圧電スピーカの出力にはデジタル出力12番
ピンを使用します。
アナログ入力をスイッチの替りに使用します
5番アナログ端子に5Vを接続すると、
スイッチ1がONとします。
4番アナログ端子に5Vを接続すると、
スイッチ2がONとします。
4番・5番共に未配線ならスイッチ1,2はOFFです。
スイッチ1がONならメロディデータ1を鳴らし、
スイッチ2がONならメロディデータ2を鳴らし、
スイッチOFFならメロディは鳴りません。
Arduinoの電源5Vとアナログ4/5番をジャンパー線でつなげばOKです。
スイッチと抵抗部品が要りませんね
《メロディを鳴らすスケッチ》
EEPROMからメロディデータを読出して音を鳴らすスケッチをここからダウンロードします。
ダウンロードスケッチの保存先と開き方はこちらを参照下さい。
このスケッチはEEPROMにメロディデータが書込まれていないと動作しません。
EEPROMにメロディデータを書込む方法は下記に記載します。
このスケッチでは、
メロディデータ1をEEPROMの0番地から読込み、メロディデータ2をEEPROMの0x20番地から読込んでいます。
この番地は、自分で作成したメロディデータにより変更して下さい。
Arduino Duemilanove 328ならEEPROMは1024バイト有ります、約510音符位は書込めるでしょう。
また、EEPROMに書込んだメロディデータは電気無くてもUSBメモリみたいに保持されます。
《EEPROMにメロディデータを書込む方法》
EEPROMにメロディデータを書込むには、EEPROMメンテナンスツールスケッチをダウンロードします。
@ダウンロードしたファイルを解凍します。
Aダウンロードしたファイルを解凍すると、[EEPROM_MNT_Melody]のディレクトリが出来ています。
BArduinoIDEを起動させて、メニューバーの「File」→「Preferences」をクリックします。
(Preferencesウインドウ画面が表示されます)
CPreferencesウインドウ画面の「Sketchbook location:」の所に設定されているディレクトリ下に、
上で解凍して出来た[EEPROM_MNT_Melody]のディレクトリを移動させます。
DArduinoIDEを一度終了させ、再び起動させます。
Eメニューバーの「File」→「Sketchbook」からサブメニューを表示させ、[EEPROM_MNT_Melody]を
クリックします。(新規ウインドウでEEPROM_MNT_Melodyのスケッチが表示されます)
Fコンパイルとアップロードを行いArduinoに書込んで下さい。
(こちらにコンパイルとアップロードの方法が書いてあります参照して下さい)
Gアップロードが終了したら、IDEのシリアルモニター(COM画面)を起動させます。
準備完了です。(シリアルモニターの使い方はこちらを合わせて参照して下さい)
メロディデータの構造
[テンポ][音データ1]---------[音データn][終了]
テンポは1バイトです、10M.M.〜250M.M.までの数値を入力します。
音データは2バイトです、音階(11bit)と音符(5bit)のデータです。
終了は1バイトです、0xFFを入力します。(これは必ず入力します、ないと最後が判りません)
音符:全音符(1)、2分音符(2)、4分音符(4)、8分音符(8)、16分音符(16)、32分音符(32)、
64分音符(64)、128分音符(128)、付点音符も入力可能。
音階:do re mi fa so ra si で入力します、半音あげるも入力可能。
音域(オクターブ)も入力します。
EEPROMメンテナンスツールの使い方
ArduinoIDEの基本的な使い方はこちらを参考にして下さい。
一度、EEPROM_MNT_MelodyのスケッチをArduinoに書き込んであれば何時でも操作できます。
@ ArduinoをUSBでパソコンに接続します。
A ArduinoIDEを起動させて、IDEのシリアルモニター(COM画面)を開きます。
(COM画面の左下に有る[Autoscroll]はチェックを付けといて下さい、操作しやすいです)
<<< Arduino EEPROM Maintenance Tool Ver.01.01 >>>
Menu Command [E:EEPROM Edit] [D:EEPROM display] [T:Transfer] [a:about this] [M:Melody]
この様に画面表示されていると思います。
メニューのコマンド入力待ちです。(コマンドは小文字でもOKです)
B COM画面の送信テキストボックスに”M”を入力してArduinoに送信します。
(送信ボタンをクリックするよりは[Enter]キーが操作しやすいです)
C メロディデータの作成と表示をする操作のコマンド入力待ちです。
<<< Create a Melody EEPROM >>>
Command [R:Return Main] [S<Adrs(HEX)>:Set Adrs] [I:Input] [D<t>:Ddisplay] [F]
Now the Address of -> 0000 ←<データ入力を開始する現在のアドレスが表示される>
R:メインメニューのコマンド入力へ戻ります。
S:データ入力を開始するアドレスを変更します。
I:メロディデータの入力を開始します。
D:作成したメロディデータの内容を表示します。
F:終了データ0xFFを入力します。
Sコマンド
・アドレス指定
Sxxxx x部にアドレスを16進数で指定します。
例) S30<Enter> データ入力を開始するアドレスを30番地からに設定
Fコマンド
次の様に表示されます。
Now the Address of -> 0010
Want to enter complete 0xFF ? (Y/N) =
0xFFを入力するならY<Enter>です、この場合は0x10番地に0xFFが書込まれます。
Dコマンド
現在設定されているアドレスから14個ずつ表示を開始します。
表示するアドレスを変更する場合はSコマンドを使用して下さい。
・dt<Enter> はテンポも表示します。
Temp = 60M.M. ←<テンポ表示>
Adrs : 0001 0003 0005 0007 0009 000B 000D 000F 0011 0013 0015 0017 0019 001B
Scale : do re mi fa so ra si do ←<音階>
Note : 4 4 4 4 4 4 4 4 ←<音符(これは全て4分音符)>
Octave: 4 4 4 4 4 4 4 5 ←<音域(オクターブ)>
・d<Enter> は上の続きから表示します、テンポは表示しません。
注意)メロディデータの構造を無視したアドレスをSコマンドで設定すると表示がずれます。
例えば、0番地から作成しているとして、d<Enter>としたらテンポが表示されない分ずれます。
この場合は、S1<Enter>としてd<Enter>とすればOKです。
また、上の表示例からS5<Enter>はOKですが、S6<Enter>ならずれます。
D 上のCでIコマンドを入力した場合は下記の様に入力モードに移行します。
[R:return] [TE:temp(10-250)] [OC:octave(2-6)] [FF] [<:prev] [>:next]
[do:re:mi:fa:so:ra:si:qf do<note(1-128)> (do4)(re#4)(ra8.)]
Octave(Range) -> 4 ←<現在の音域(オクターブ)表示される>
R :Cのコマンド入力へ戻ります。
<:入力するアドレスを1個(2byte)戻します。
>:入力するアドレスを1個(2byte)進めます。
FF:終了データ0xFFを入力します。(上のFコマンドと同じです)
TE:テンポの入力を行います。
OC:音域(オクターブ)の入力を行います。
DO、RE,MI,FA、SO、RA、SI、QF:音階と音符の入力です。
TEコマンド
・テンポデータ指定
TExxx x部に10M.M.〜250M.M.の範囲で指定します。
例) TE80<Enter> テンポ80M.M.で設定されます。
(81とかも入力出来ちゃったりするんですがぁ....どうなんでしょう?)
(1つの曲の先頭に入力されていないといけません)
OCコマンド
・音域データ指定
OCx x部に2〜6の範囲で指定します。(C2〜B6までです)
例) OC5<Enter> 音域(オクターブ)が5で設定されます。
(C2)2←→3←→4←→5←→6(B6) 4が通常で左側が低く、右側が高くなります。
Octave(Range) -> 4 ← この行表示に注意(起動時は4です)
音階と音符
・データ入力構造 [音階#][音符.]<Enter>
音階:do re mi fa so ra si と#を付けると半音上がります。
音符:上記のメロディデータの構造で書いた様に1-128で入力します。 付点音符は.を付けます。
例)do4 →ドの4分音符 do#4 →ド(半音上)の4分音符 do4.→ドの付点4分音符
前と同じ音符入力なら省略も可能です。
・休符の入力 qf[音符.]<Enter>
例)qf4 →4分休符 qf8.→8分付点休符
1オクターブ上の音階入力時はOC5<Enter>と変更してdo4<Enter>とします、
これはB5ですね。(このまま切替えないとOC5が続きます)
使い方の例
これをEEPROMのアドレス0x80番地から書込むとします
テンポは120M.M.とします。
@ arduinoIDEのCOM画面が起動され下のメインメニューが表示されています。
<<< Arduino EEPROM Maintenance Tool Ver.01.01 >>>
Menu Command [E:EEPROM Edit] [D:EEPROM display] [a:about this] [M:Melody]
m<Enter>を入力
A メロディデータ作成と表示のメニュー
<<< Create a Melody EEPROM >>>
Command [R:Return Main] [S<Adrs(HEX)>:Set Adrs] [I:Input] [D<t>:Ddisplay] [F]
Now the Address of -> 0000
s80<Enter>を入力 ←<書込む番地を設定>
Now the Address of -> 0080
i<Enter>を入力
B メロディデータ入力モードです、作成用コマンドメニューが表示されます。
[R:return] [TE:temp(10-250)] [OC:octave(2-6)] [FF] [<:prev] [>:next]
[do:re:mi:fa:so:ra:si:qf do<note(1-128)> (do4)(re#4)(ra8.)]
Octave(Range) -> 4
te120<Enter>を入力 ←<テンポを設定>
Temp = 120M.M.
oc5<Enter>を入力 ←<1オクターブ高いので5を設定>
Octave(Range) 4 -> 5
re4.<Enter>を入力 (D5)
[Adrs:0081][Scale: 587Hz re ][Note: 4.][Octave: 5]
re8<Enter>を入力 (D5)
[Adrs:0083][Scale: 587Hz re ][Note: 8][Octave: 5]
re4.<Enter>を入力 (D5)
[Adrs:0085][Scale: 587Hz re ][Note: 4.][Octave: 5]
oc4<Enter>を入力
Octave(Range) 5 -> 4
si8<Enter>を入力 (B4)
[Adrs:0087][Scale: 494Hz si ][Note: 8][Octave: 4]
oc5<Enter>を入力
Octave(Range) 4 -> 5
do4.<Enter>を入力 (C5)
[Adrs:0089][Scale: 523Hz do ][Note: 4.][Octave: 5]
ff<Enter>を入力 ←<入力終了0xff入れます、まだ途中なら入れなくてもOK>
Now the Address of -> 008B
Want to enter complete 0xFF ? (Y/N) =
y<Enter>を入力
r<Enter>を入力 ←<入力モード終了Aに戻ります>
C 作成したデータを表示して見ます。
<<< Create a Melody EEPROM >>>
Command [R:Return Main] [S<Adrs(HEX)>:Set Adrs] [I:Input] [D<t>:Ddisplay] [F]
Now the Address of -> 008C
s80<Enter>を入力 ←<表示開始番地を設定>
Now the Address of -> 0080
dt<Enter>を入力
Temp = 120M.M.
Adrs : 0081 0083 0085 0087 0089 008B 008D 008F 0091 0093 0095 0097 0099 009B
Scale : re re re si do
Note : 4. 8 4. 8 4.
Octave: 5 5 5 4 5
もし、データ入力の続きを行う場合は0x008Bのアドレスから開始します。
《その他操作》
このソフト、メロディデータをEEPROMに書込むスケッチはこちらの機能に追加したソフトです。
メロディ書込み機能以外の使い方はそちらを参照して下さい。
また、作成したメロディのデータをファイルに保存したり、保存したファイルからEEPROに書き込んだり出来ます。
「ファイルの転送」機能はこちらを参照して下さい。
ダウンロードして解凍した[EEPROM_MNT_Melody]のディレクトリの中にサンプルメロディデータとして
EEPROMデータを付けときました、EEPROMに転送書込みすればメロディデータとして利用できます。
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2020 Shigehiro Kimura All Rights Reserved.