プログラム
リモコンのキー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
|