0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EV3DEVでジャイロセンサを強制リセットする方法

Posted at

環境

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')

  1. subprocessはMicroPythonでは(少なくとも初期状態では)利用できない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?