東芝のPASOPIAはカセット形式で言語カートリッジが提供されている。これを読み取るためにArduino MEGA 2650用のシールドを作ったのだが、読み取ったデータをシリアルコンソール経由でコマンドを入力しダンプしたりするなどの操作をする部分が面倒で放置していた。
ハード側の説明:
ROMPAC1のピン配置は→ PASOPIA/PASOPIA7のROMPAC1
PASOPIARW基板 回路図
レイアウト
回路は大したことなくてジャンプワイヤーでもできるレベル。でもジャンプワイヤーでやったらうまくいかなかったので基板つくったの。
GG for Arduinoを使ったPASOPIAPAC1R.inoのスケッチはこちら。
使い方。公式ライブラリに登録してあるので、Arduino IDEのライブラリマネージャから トピック:コミュニケーションを指定して"GG"で検索。インストールする。
以下はPASOPIAPAC1R.inoから引用しつつ説明。
gg_con_baud = 9600;
| gg_start("\n*** PASOPIA ROMPAC1 READER ***\n"); // Start processing GG for Arduino |
gg_start("タイトル");で使用開始。デフォルトでの通信速度は115200bpsだが、gg_con_baud変数を事前に変えておくと速度を変更できる。
gg_con_CmdInit();
デフォルトで内部のメモリダンプ用のコマンドが組み込まれているが、今回使わないのでまっさらにする。
GG_CON_CMDADD(PAC1_help, "h", "", "PASOPIA-PAC1 help" );
GG_CON_CMDADD(PAC1_help, "?", "", "PASOPIA-PAC1 help" );
組み込んであったhelpコマンドも消えるので自前で設定。GG_CON_CMDADD()でコンソールから指示できるコマンドを定義できる。
第1引数:コマンドで呼び出される関数
第2引数:コマンド名
第3引数:コマンドの引数の説明
第4引数:コマンドの使用方法説明
void PAC1_help(int argc, char **argv) {
gg_con_CmdHelpAll();
}
ここで呼び出される関数は引数をargc,argvで渡すことができる。unixコマンドを自分で書いて追加するような感じ。
gg_printf("%04X\n",PAC1_addr); とても便利なのが書式指定が使えるgg_printf()。このライブラリを知る前は自前でこんな感じにしてた。http://blog.livedoor.jp/hardyboy/archives/9620242.html
void sprinthex(unsigned long int x, int dg) {
if (dg>=8) if (x<0x10000000) Serial.print("0");
if (dg>=7) if (x<0x1000000) Serial.print("0");
if (dg>=6) if (x<0x100000) Serial.print("0");
if (dg>=5) if (x<0x10000) Serial.print("0");
if (dg>=4) if (x<0x1000) Serial.print("0");
if (dg>=3) if (x<0x100) Serial.print("0");
if (dg>=2) if (x<0x10) Serial.print("0");
Serial.print(x,HEX);
}
圧倒的に楽。
if (isDigit(argv[1][0])) st = gg_asc2int(argv[1]);
gg_asc2int()で引数を数値に変換できる。このとき、"0x1000+256"のような式も評価してくれる。
if (gg_GetC()==PAC1_BREAK) return;
if (hexflag) while(gg_GetC()<0);
コマンド内でキー入力を見て、長いダンプリスト表示を中断させることもできる。また、PASOPIAPAC1RではIntel HEX形式でのダンプに対応しているがteratermのログに保存するときにプロンプトまで記録したくないので、ダンプ終了後のキー入力待ちも実現している。
その他、GGにはミニFIFOバッファや日付変換、Arduinoの任意の端子を使ってトリガを出力する機能がある。ロガー用途などにも便利に使えそう。
ということでGG for Arduinoはシリアルコンソールから対話的に操作する用途に有用です。

























![Rasbee GY-NEO6MV2 Flight コントローラー NEO-6M APM 2.5 GPSモジュール Arduino用 1個 [並行輸入品]](https://images-fe.ssl-images-amazon.com/images/I/41vu%2BA1VG4L._SL160_.jpg)







![GY-302 BH1750 光照度照明モジュール [並行輸入品]](http://ecx.images-amazon.com/images/I/41iPc7q7UhL._SL160_.jpg)



![HiLetgo Digispark Kickstarter ATTINY85 Arduino Micro USB 開発ボード [並行輸入品]](http://ecx.images-amazon.com/images/I/41jY92wQCLL._SL160_.jpg)
![Rasbee オリジナル Digispark Kickstarter ATTINY85 Arduino Micro USB 開発ボード Arduino 1個 [並行輸入品]](http://ecx.images-amazon.com/images/I/513y7iAxVPL._SL160_.jpg)

![HiLetgo 人センサーモジュール焦電赤外線 HC-SR501 [並行輸入品]](http://ecx.images-amazon.com/images/I/41v2ZCYNdmL._SL160_.jpg)












