頭部LEDの多機能化

これまで、専ら電源ランプとして働いていたロボ頭部のLEDに、リモコン信号等の受信インジケータ機能を追加した

プログラム
コーディングは僅か2行の追加。周囲を含めて右欄に示す。

処理の説明
変数RR(のコピーRR_BUF)で受信データ有無を判定し、有ればLEDを消灯しその後点灯する。
斜体で示すOUT命令文がLEDをON/OFFする処理。消灯時間はDELAY文で指定するのが真っ当だろうが、ロボ制御の主ループ(※)にDELAYを入れる気にならず、元々からある処理Bの前後で実行するようにした。
※ラベルを頼りにソース全体を眺めると判り易いかも

因みに、MR-C3024の回路図を参考にCPUボードを見ると、回路図左上のLED(D4、D5)は基板に実装されておらず(右の写真)、D5の代わりにコネクタSL2を介して頭部のLEDが接続する。

結果
リモコン操作に反応してLEDが明滅し、続いてロボがモーションを起こす。うん、なかなかイイ感じ。

おまけ
 受信インジケータの観察によれば、ロボ用赤外線リモコンはボタンを押下し続けると約1秒間、ボタンに対応するコマンド信号を連続送信している。

修正履歴(2011/8/23)
当初はOUT命令のポート番号を50とし、事実それで動作確認済だが、ROBONOVAマニュアルのプログラム例(後日発見)が示す52で動作確認したので、52に修正。
MAIN:
RR = 0

'-----------------------------
REMGET:
 RR = REMOCON(1)
 RR_BUF = RR - ID
 RR = 0
 IF RR_BUF = 0 THEN  'no command gotten
  (処理A)
 ELSE  'got command
  OUT 52, 1  'LED OFF
  (処理B)
  OUT 52, 0  'LED ON
 ENDIF
  

※この記事が何かのお役にたつことを願っていますが、記事内容についてのいかなる保証もしません