頭部LEDの多機能化(その2)

ロボ頭部のLEDにリモコン信号の受信インジケータ機能を搭載したのに続き、バッテリー残量アラーム表示機能を追加して、更に多機能化した

プログラム
リモコンのキー26の処理【標準姿勢をとる】にコードを追加。(右欄) 元プログラムはこちらで掲載。
Blogにも書いたが、加速度センサーは電源電圧低下で出力値が大きく変わるので、それを検出してバッテリー残量を警告表示している。

処理の説明
センサー出力は偶に連続性のない値となることがあるので、10回測定して平均をとる。そのため、変数DEGはINTEGERで宣言する。
Myロボで調べた限り(※)では、バッテリー残量十分なら転倒時もセンサー出力は80以内、残量不足だと直立時も90程度になるので、転倒と残量不足の区別がつく。(※:個体差に要注意)
以上に基づき、センサー出力に応じて次のような場合わけ処理とした。
  • 85超え → LEDで残量アラーム表示
  • 85以下&74超え → 仰向け姿勢から立上がり
  • 50より小 → うつ伏せ姿勢から立上がり
結果
いまのところ、特に問題なく動作している

ROBONOVAマニュアル最終ページには、電源電圧を測定して電池残量を判断するプログラム例(+それ用の追加回路図)が掲載されている。これだと電源電圧測定用にアナログポートを1つ占有してしまうのに対し、加速度センサー出力で判定するのでポートを節約できる。

追記(2014年9月)
MUSIC文で警告音発生を追加した。
k26:  'standard_pose

 MOVEPOS G24,STDPOSE

 NEXTSTEP = STEP_WHICHEVER
 WALKPHASE = WALK_READY

 DEG = 0 'DEG is defined as INTEGER
 FOR i = 1 TO 10 'sum GRV 10 times
  GRV = AD(6)
  DELAY 20
  DEG = DEG + GRV
 NEXT i
 DEG = DEG / 10 'mean value of GRV

 IF DEG > 85 THEN 'battery almost empty
  FOR i = 1 TO 5
   OUT 52, 1
   DELAY 200
   MUSIC "A" 'add on 2014.09
   OUT 52, 0
   DELAY 200
  NEXT i
 ELSE
  IF DEG > 74 THEN GOSUB B_stdup
  IF DEG < 50 THEN GOSUB F_stdup
 ENDIF

 GOTO main_exit
  

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