curious4dev

色々ダメなandroidアプリを開発したい会社員 高橋が綴る、androidアプリ開発やArduinoについて

*

【完成】PCからシリアル通信でEEPROM書き込み

 

お疲れ様です。高橋です。

PCからシリアル通信を介して楽曲データをEEPROMに書き込むのがなかなか上手く行かなかったのですが、試行錯誤の末、完了しました。

全体の流れ

SMFをYMZ用に変換したコードを、javaで書いたプログラムで読み込み、バイナリに変換し、シリアル送信します。それをArduino側が受信し、EEPROMに書き込みます。

062801

この中で問題は2箇所ありました。

過酷なデバッグ

PCとArduinoがデータのやりとりのためにシリアルポートを使ってしまうので、外からどんなデータが授受されてるのか覗き見できなく、デバッグは大変。

データをシリアル受信したりEEPROMに書き込んだらLEDが光るようにしました。

IMG_5848

Javaでのシリアル通信

最終的に動作したコードは下記の通りです。

修正点は

  1. シリアル通信用のoutputstreamを作った後に5000のsleepを挟んだ
  2. char配列に与えるデータの型をそもそもミスってた

の2点でした。

Arduino側のSerial.read()とMEM.Write()

最終形のArduino側のEEPROM書き込みスケッチは下記の通りです。

また火傷

EEPROMへの書き込みが成功したら、読み込み用に待機させといたArduinoのブレッドボードにEEPROMを差し込みます。流れてくるファイナルファンタジー2の戦闘テーマを聞いて、疲れが吹っ飛びました。

楽曲を何回か差し替えている時、EEPROMを上下逆に刺してしまい、触れないほどの熱を発し、また火傷してしまいました。幸い、EEPROMは壊れずに済みました。火傷する程の熱が出てるのに壊れないなんて、超頑丈。

今後

今回の楽曲データは、音階と長さと休符だけをバイナリ化しているだけなので、曲の最初にメタデータとして曲のテンポとエンベロープのデータ、そして繰り返しポイント用のデータを混ぜたものに変更しようと思います。

それと、書き込みのためだけにArduino Pro Miniを使うのはもったいないので、AVRマイコンをそのまま使えないかなーと思っています。

スケッチの容量は4Kbyte以下で、メモリが403byteです。これを満たす生マイコンは無いかな・・・と探してみたところ、2ドルのPro Miniより安いAVRは日本で買えない事がわかったため、大人しくPro Miniを使い続けます。

 

 

以上、よろしくお願い致します。

 - 電子工作

  関連記事

マウスの位置座標を使った電子楽器を作ってみた。

お疲れ様です。高橋です。 先日分解したマウスを使って、位置座標の取り出しと、取り …

電子オルゴール設計

お疲れ様です。高橋です。 電子オルゴールがどんな形状になるのか、実体配線図を作っ …

【完成】 耳コピミキサー

お疲れ様です。高橋です。 作成途中だった耳コピミキサー、やっと完成しました。 思 …

音階LED実装 #2

お疲れ様です。高橋です。 本日も昨日に引き続き半田付け。 今日の進捗 昨日の残り …

iPhoneでルンバを操作してみたい

お疲れ様です。高橋です。 突然ですがiPhoneでルンバを操作したいと思います。 …

4桁7セグLEDを基板に実装

お疲れ様です。高橋です。 昨日に引き続き今日も奇跡的に早く帰宅する事が出来たため …

耳コピを簡単にするミキサー構想

お疲れ様です。高橋です。 私が普段耳コピをする時は、iPhoneで音楽を鳴らしな …

電子オルゴール 基板実装 #2 ~ワイヤストリッパー~

お疲れ様です。高橋です。 先日秋葉原でワイヤーストリッパーを買ってきました。 被 …

「びんぼうでいいの」を組み立ててみた。

お疲れ様です。高橋です。 懸案だったヘッドフォンの修理が片付き、やりたい事をやり …

大掃除を終え、aitendoで30円で売ってたタクトスイッチ基板でクリスマス

お疲れ様です。高橋です。 aitendoで店頭限定30円だったタクトスイッチ基板 …