環境
EV3DEV上で動作する任意のアプリケーションで実行できる。
コードサンプルはMicroPython。
問題
ジャイロセンサを利用していると、動いていないのに値が常に変動する場合がある。
解決策
ジャイロセンサのモードをGYRO-CALに設定すれば良い。
例えば、標準のドライバを利用して以下のように記述できる。
echo GYRO-CAL > /sys/class/lego-sensor/sensor<id>/mode
※ここでのIDはジャイロセンサが接続されているポートとは異なる。詳細は以下を参照。
実装
os.system()で実装する。1
main.py
# get sensor id
sensor_id = 0
dirs = os.listdir('/sys/class/lego-sensor')
for _dir in dirs:
address_file = open('/sys/class/lego-sensor/' + _dir + '/address')
address = address_file.read()
address_file.close()
if address == 'in' + str(1):
sensor_id = int(_dir.replace('sensor', ''))
# do forced reset
os.system('echo GYRO-CAL > /sys/class/lego-sensor/sensor' + str(sensor_id) + '/mode')
os.system('echo GYRO-ANG > /sys/class/lego-sensor/sensor' + str(sensor_id) + '/mode')
-
subprocessはMicroPythonでは(少なくとも初期状態では)利用できない。 ↩