CH55xDuinoのマスストレージのサンプルプログラムを使って、LEDの色を書き換えられるようにしました。
マスストレージサンプル
CH552をマスストレージ(USBメモリ)として動作させるためのサンプルプログラムが、ch55xduinoのサンプルの中にあります。
「スケッチ例」→「Generic_Examples」→「05.USB」→「MassStorage」
です。
このサンプルはマスストレージの機能の一部を提供しています。
パソコンからのファイルアクセスは、filesOnDrive変数に書かれたファイル名のみ可能です。このため、ここに記載のないファイルをパソコンから書き込みことはできません。
このサンプルのLED_CTRL.TXTファイルは、パソコンでこのファイルの内容を0か1か書き換えて保存するとこで、CH552へ値を伝達できることができます。
これがWindowsでLED_CTRL.TXTをメモ帳で開いてみました。このファイルの最初の一文字を変更して保存すると、CH552に0か1かを伝えることができます。
windowsでは正常に動作したのですが、macでファイルを書き換えて保存しようとすると、空き容量がないというエラーが出て保存ができません。
ch55xduinoのサンプルプログラムは、ストレージ内の使用しない領域を全てバッドクラスタに設定することで、プログラムを簡素化しています。macはマスストレージに一旦別の名前でファイルを保存して、元のファイルを削除後、元のファイル名にリネームするという操作をしているようです。この操作のために、プログラムで設定していないファイルへのアクセスとなるため、ファイルの上書き処理が完了できないようです。
サンプルプログラムの一部をコメントアウトすることで、バッドクラスタの登録を解除できるのですが、その場合パソコンからアクセスがあった場合にどのように対処していいのかわりませんでした。残念ですがmacではは諦めることにします。
LEDの色を変えるプログラムを作る
MassStorageを改造
windows専用になってしまいますが、マスストレージのサンプルプログラムを改造して、LEDの色を変えられるようにするプログラムを作りたいと思います。
基本的にサンプルプログラムの、DATAFLASH.BINファイルの処理を利用します。このファイルはパソコンからバイナリファイルを書き換えることで、CH552のフラッシュROMを書き換えることができます。
この書き換えらフラッシュROMの値を読み出してLEDを点灯させます。
全体のプログラムはこんな感じです。setupでデータのポインタの受け渡しと、フラッシュROMからデータをロードします。
loopの中のShowLED()は、でネオピクセルを点灯させるとともに、3つのLEDの色を少しずらします。これがループすることで、3つのLEDの色が順番に変わっていきます。
実行してみる
XmasTreeというボリュームラベルのマスストレージになりました。この中に、サンプルのDATAFLASH.BINのプログラムを改造したCOLOR.TXTがあります。この中のデータがLEDの色になっています。
初期設定では、RGBなどの原色に近い色のループになっています。(表から見るよりも、LEDを直接みた方が色がわかりやすいので、裏からの映像になっています)
COLOR.TXTファイルをこのように日本語に書き換えてみます。
日本語の文字は、キャラクターコード的にネオピクセルのRGBの各色が同時に強く光りやすいようで、パステル調の色合いになりやすいです。
頑張ってプログラムを作った割には、ファイルの内容をあれこれ書き換えても、それほど極端に色合いが変わることはありませんでした。日本語はパステル調で、英語は原色系になりやすいって感じです。
プログラムが完成しました
windowsのメモ帳でしか書き換えができませんが、クリスマスツリーをパソコンに接続して、LEDの色を書き換えられるようになりました。
CH552のプログラムの書き換えには、以前作ったCH552書き込み機が大いに役立ちました。
というのも、CH552は再書き込みの際にUSBの抜き差しが必要だからです。書き込み機はこの動作を電子的に行うため、ボタンを1回押すだけでダウンロードモードにできてしまいます。
CH552でプログラムを作っている方にはおすすめの装置です。
2023.11.21 続きはこちらです
コメント