NRS+

New Reeves&Sinensis plus

サイト内検索

  HOME | サーバ紹介 | ライブカメラ | カメを飼おう | 特集・小ネタ | 鉄道図鑑 | 雑記 | リンク

  HOME > 特集・小ネタトップページ > Arduinoで電子工作2 -サンプルスケッチでLチカと簡単電子オルゴール-


Arduinoで電子工作2
-サンプルスケッチでLチカと簡単電子オルゴール-
作成:2014年5月5日
更新:2014年12月6日




1.サンプルスケッチで動作確認(Lチカ)

 前回の準備編ではArduino本体、電子部品、Arduino IDE(統合開発環境)を揃えました。今回はこれらを実際に使ってみます。
IDEにはサンプルスケッチというプログラムの手本が用意されています。サンプルスケッチでArduino本体へのスケッチの書き込み方と動作の確認をします。

 LチカとはLEDをチカチカ(点滅)させるの略でArduinoに限らず各種マイコンを扱うときに最初に試すことが多い最も基本的なプログラムです。




使用するのはArduino本体とデータ書き込み用のUSBケーブルのみ



1.1 ArduinoとPCを接続する (準備編2.2から続けて作業する場合は不用)

 Arduino本体をPCにUSBケーブルで接続します。接続するUSBポートは前回の準備編2.2 起動と設定で使用したポートにしましょう。違うUSBポートに接続するとCOM番号が変わり再設定が必要になることがあります。


1.2 Arduino IDEの起動とサンプルスケッチの読み込み

 IDEを起動し、「ファイル」→「スケッチの例」の順で選択します。するとサンプルスケッチの例がたくさん出てきます。「Basics」→「Blink」の順で選択します。「Blink」は13番ピンのLEDを点滅させるスケッチです。Arduinoの基板上に13番ピンに接続されたLEDがあるので配線は不要です。(Arduino Uno R3で確認 / 他機種は未確認ですが搭載されていると思います)




サンプルスケッチの選択



1.3 スケッチの書き込み

 Arduino本体にプログラムを書き込んで実行してみます。IDEので囲ったボタン(下図)をクリックするとスケッチがArduinoに書き込まれます。正確にはコンパイル→書き込みの順番で処理が行われているのですが、この段階では気にしなくていいでしょう。コンパイルとは人間が書いたプログラムを機械が読めるように翻訳するような作業です。




サンプルスケッチ Blink





書き込み完了表示





が13番ピンに接続されているオンボードLED


 もし書き込みに失敗したら準備編2.2 起動と設定に戻ってCOM番号が合っているか確認しましょう。書き込みが完了したらArduino本体の様子を見てみましょう。13番ピンの近くにあるLED(写真)がオレンジ色に点滅しているはずです。「マイコンボードへの書き込みが完了しました。」と表示されているにもかかわらずLEDが点滅していない場合は、サンプルスケッチを選び間違えたスケッチを書き換えてしまったArduino本体が不良品であるということが考えられます。




2.電子オルゴール

 サンプルスケッチを書き込んで本体に搭載されているLEDを点滅させた直後に曲を演奏というのは飛躍しすぎな気がしますが、簡単にできる方法があります。参考書籍を読み進めたりしてある程度の知識がある方はtone関数を使う方法が思い浮かんだと思います。ところが今回もスケッチは1行も書かずに作ってしまいます。弘前大学教育学部の小山智史教授が教材用として公開している電子オルゴールソフト Mymelo2を使います。サンプルスケッチのときと同じく既存のものを使う方法です。プログラミングはしませんがネットで公開されているスケッチの使い方ということで。


私だけの電子オルゴール  http://siva.cc.hirosaki-u.ac.jp/usr/koyama/mymelo/

 オルゴールの楽譜データ書き込み用プログラムは上記リンク先の公開ページ内2. 準備より「電子オルゴールソフト Mymelo2」をダウンロードして適当な場所に解凍します。「テキスト音楽サクラ」は短くて簡単な曲を作る場合はなくてもいいです。「WinAVR-20100110」(Cコンパイラ)、「書き込み装置(HIDaspxまたはヒダピオ)...」は使いません。


 使用する部品は圧電ブザー(スピーカー)だけです。圧電ブザーはArduino本体の9番ピンと10番ピンに接続します。極性はないのでどちら向きでも構いません。既製品のスピーカーを接続するときは写真のようにワニ口クリップ付きのジャンプワイヤを使う方法や、プラグを切ってケーブルの被覆を剥いて圧電ブザーのように直差しする方法などがあります。

 *スピーカーを抵抗等の保護なしで直結する場合、念のため壊れてもよい安価なものを使用しましょう。本稿では100円ショップで購入したスピーカーが直結で使用できることを確認していますが、それも含め一切を保証しません。





部品表
品名 型番など 数量
圧電ブザー スピーカーでも可 1



配線例1 圧電ブザー



配線例2 100円のスピーカー



2.1 楽譜データの作成

 Arduinoのスケッチは書かなくていいのですが楽譜のデータは書かなければなりません。それすら面倒なら付属のサンプルデータ(kira2.mml)で2.2の作業をすれば音を鳴らすことができます。楽譜データは音楽の知識がなくても容易に書けるようになっていますが本格的なものを作ろうとするとそれなりに難しくなります。何度も書き直して試行錯誤するところはプログラミングと一緒かもしれません。


2.1.1 メモ帳で作成

 メモ帳を開いて楽譜を書き込みます。楽譜は全角ひらがな・カタカナでドレミといったように書くだけでいいです。音階を指定したい、テンポを変更したい、和音で演奏したいといったときは私だけの電子オルゴールの「3. 楽譜の作成」にあるコマンドを入力してください。楽譜を入力するときは文字の全角半角の違いに注意しましょう。間違うとエラーとなり動きません。作者ページにも書かれていますが一度に全部入力せず少しずつ入力して次の工程に進んで確認すると間違えた箇所が見つけやすいです。入力したデータは拡張子.mmlで保存します。「.txt」で保存して後から拡張子を変えてもいいです。




メモ帳での入力例




ファイル名は「○○.mml」で保存



2.1.2 テキスト音楽 サクラで作成

 テキスト音楽「サクラ」 http://oto.chu.jp/よりプログラムをダウンロードしてインストールします。楽譜に使えるコマンドは2.1.1と同じです。サクラには雛形挿入といった機能がありますが、今回使用するプログラムに対応していないコマンドが多く含まれているので使わないほうがいいです。音符の入力方法はキーボードによる手入力のほかに鍵盤入力五線譜入力があります。ソフトをインストールするのは手間ですがこのような機能があるためメモ帳より入力しやすいです。メモ帳での入力と同様に少し入力したら一旦保存して次の工程で確認するといいでしょう。




サクラでの入力例




ファイルの保存

デフォルトで拡張子が.mmlになるはずです


2.2 データの書き込み

 作成したmmlファイルをダウンロードして解凍したmymelo2フォルダ内の「mymelo.wsf」にドラッグ&ドロップします。成功したときは「ライタが接続されていません。他のライタを…」と表示されます。1行目がエラーのように見えますが成功時の表示です。エラーがある場合は「ERROR(*行目)…」などと表示されます。〜行目とありますが行数は実際の行数と異なる(ことがある)ので、エラーが出たら新たに追加した箇所を削除してエラーがなくなるか確認するといいです。
 稀にここで成功してもArduino本体に書き込むときに失敗することがあります。(対処法は後述)




mymelo2フォルダ内の「mymelo.wsf」とmml(楽譜)ファイル




成功したときの表示




エラー表示


 Arduino本体への書き込みはmymero2フォルダからsrc→mymeloとたどってmymelo.inoを開きます。書き込みの方法はサンプルスケッチのときと同様にArduino本体をPCに接続してIDEの書き込みボタンを押すだけです。

 楽譜データを書き換えたときはmymelo.inoを閉じてもう一度最初(データのドラッグ&ドロップ)からやり直します。楽譜データをドラッグ&ドロップしてからmymelo.inoを開かないと変更が反映されません

 稀に失敗すると書きましたが以下がエラーの例です。エラー例1は「音色1」という使用できないコマンドを入力したことによるものです。使用可能なコマンドでもスペルミスや半角・全角の間違いなどによって発生することがあります。楽譜の削除や挿入を繰り返すと「`ド`8」などといったように間に余計な文字が入ったり逆に欠けたりといったミスが起こりやすくなります(8の前の「`」がエラーの原因)。この場合は黄色の部分を削除してもう一度書き込めばとりあえず成功します。この方法だとArduinoに書き込むデータが変わっただけで元の楽譜データ(mmlファイル)はそのままなので、そこを直さないと次に書き込むときに再発します。

 エラー例2は楽譜ファイルをarduinoで演奏できるように変換した際に使用できない文字が混入してしまったものです。これも楽譜の記述ミスにより発生します。対処方法はエラー例1と同様ですが灰色太字になっている箇所の最初の文字を削除すればいいです。複数個所ある場合は実行→訂正→実行の繰り返しですがあまりに数が多いときは楽譜の記述を一から見直したほうがいいです。ここで訂正しても楽譜ファイルはそのままであることはこれも同じです。


*エラー例2は作業中に一度発生したのですが発生状況と訂正箇所の記録を取っていなかったため捏造擬似的に再現したものです。




エラー例1





エラー例2


2.3 メロディの再生

 データの書き込みが終ると自動でメロディが再生されます。再生が終了してもリセットボタンを押せばまた再生されます。今現在データを書き込んだ直後でArduino本体がPCにUSBで接続されている状況ですが、一度データを書き込めばPCに接続しなくても演奏できます。USBケーブルをArduino本体からPCでなくUSBモバイルバッテリーやUSB-ACアダプタなどの外部電源に接続するかArduino用のACアダプタを使用します。USB電源ACアダプタ同時に使用してはいけません。必ず片方のみ接続してください。

 最後に作例です。作例1は3和音1分半で楽譜(mml)の文字数は約2000字です。連続した休符が多いので同じ演奏でももう少し字数を減らせますが、これでもデータ量的に全く問題ありません。
作例2は作例1同様に3和音で演奏時間もほぼ同じ時間ですが曲のテンポが速いので3100字になりました。

*楽譜の文字数=演奏される音の数ではありません。「ミ8」は2文字、「音符2ッ.」は5文字となりますが実際にArduinoに書き込まれるデータ量は同じです。



作例1



作例2







HOME





20140721MO