ロビ2割込みスイッチの拡張
2021年11月28日
ロビ2の頭に付いているスイッチはプログラムの実行中に押すと実行中のプログラムが中断されて終了します。
音声認識や画像認識の応答待ちでプログラムが先に進まない時や長いプログラムを途中で終了したい時に実行をキャンセルするのに用いられています。
今回はこれと同じ仕組みを使ってふたつ目のスイッチをロビ2に付けてみました。
割込みスイッチの仕組み
まずロビ2の割込みスイッチの仕組みについて説明しておきます。
頭のスイッチは白いケーブル(2線)で右目の赤外線送受信ボード(LEDボード)に接続されます。
赤外線送受信ボードからは 赤外線リモコンボードに接続されていますがこれは赤外線信号データのやり取りに用いられるもので接続を外してても割込みスイッチは機能する事が確認されています。
マイコンボードにはもう一方の口LEDボード経由で接続されています。
右目の基板と口の基板は6本のケーブルで接続されていますがスイッチのON/OFFでこのケーブルの電圧の変化を測定してみました。
3本目の信号線の電圧はOFFの状態では0VでしたがONの状態では3V位ありました。
プラロボホンの改造その2で2本目の信号線がVCCである事が分かっているので3本目の入力にVCCを接続してやるとスイッチのON状態にできる事が確認できました。
この仕組みを使い前回ロビ1.5 その7でロビ1に頭のスイッチを追加しました。
プログラムからはマイコンボードのアドレス0x0e18の値でスイッチの状態が取得できます。
OFFの状態は0でONの状態は1となります。
次の命令で頭のスイッチが押されたかを判定する事ができます。
<calc><mem_r size="2" adr="0x0e18"/><const data="0"/><sub/><ne/><jump adr="押された時の分岐アドレス"/></calc>
拡張スイッチの配線
ロビ2の頭のスイッチが接続されている右目のLED基板のケーブルを口のLED基板の左目側に接続してみました。
標準のプログラムの割込み処理が機能しませんでした。
メモリの状態をファイルに書き込むプログラムを動かして頭のスイッチを押さない状態と押した状態でメモリダンプを採取してみました。
左がスイッチを離した状態で右がスイッチを押した状態です。
メモリダンプは0x0e00から128バイト採取しています。
アドレス0x0e16(0x16)が0から1に変化しています。
このことから右目の場合はアドレス0x0e18が変化するのに対して左目の場合はアドレス0x0e16が変化している事が分かります。
ロビ1.5 その7で作成したスイッチを接続したケーブルを左目に使用しました。
配線図は以下のようになります。
拡張スイッチの取付
拡張スイッチとして耳パネルにタクトスイッチを取り付けました。
ロビと向かい合った時に右手で操作しやすいように左側に取り付けました。
タクトスイッチはグルーガンで付けた状態でちょうど耳ベースの穴に納まる位置にします。
写真のように穴の位置を書いておくと位置を決めやすいです。
タクトスイッチのボタンを通す穴を耳パネルに開けます。
タクトスイッチにリード線をハンダ付けしてグルーガン(ホットボンド)で固めます。
LEDケーブルとはコネクターで接続するようにしましたが直接LEDケーブルとリード線は接続しても構いません。
プログラムの変更
頭のスイッチを使用したプログラムをいくつか作っていますがこれを拡張スイッチに対応させました。
頭のスイッチを押すたびに順送りしていましたが拡張スイッチで逆送りさせて目的の値を選択しやすいようにしました。
カメラの代りに拡張スイッチや頭のスイッチ操作で顔認証ができるようにしました。
音量調整(2ボタン対応).RM4 拡張スイッチまたは頭のスイッチでロビ2の音量が調整できます。
時刻調整(2ボタン対応).RM4 拡張スイッチまたは頭のスイッチでロビ2の現在時の分の調整ができます。
ランダム値設定(2ボタン対応).RM4 ロビ2のランダム値のデータファイルRND.BINの値をロビ2で設定する事ができます。
登録顔認識(拡張ボタン/頭ボタン).csv メッセージやイベント登録時の顔認証で拡張スイッチで行う事ができます。
アイドリング顔認識(拡張ボタン/頭ボタン).csv アイドリング(ロビが何も実行していない時)に拡張スイッチを押すとあいさつや伝言メッセ―ドや登録したイベントを言ってくれます。
クイズ解答.csv クイズの解答時に拡張スイッチまたは頭のスイッチを操作して解答できます。
旗揚げゲーム開始.csv 旗揚げゲームや絵本朗読の開始時に拡張スイッチまたは頭のスイッチを操作して開始できます。
登録時とアイドリング時の顔認証のパッチは標準の頭のスイッチでも操作できるパッチファイルも含まれています。
プログラムとパッチファイルは以下のzipファイルを解凍してください。
詳しい適用方法や操作方法については中に含まれるReadMe.txtを参照してください。
exswitch.zip
このプログラムやパッチファイルを実際に動かした動画です。
目次に戻る