目次 #contents * 準備 [#q864ac9b] http://www.ev3dev.org/docs/getting-started/ を参考に。 ** OSのイメージをダウンロード [#sb77d4ec] https://github.com/ev3dev/ev3dev/releases/download/ev3dev-jessie-2015-12-30/ev3-ev3dev-jessie-2015-12-30.img.xz ** microSDまたはmicroSDHCにコピー [#jeaf4320] microSDXCは使えない。microSDのデバイス名が /dev/sdb とすると、以下のようにddでイメージをメディアに書き込む。 xzcat ~/Download/ev3dev-yyyy-mm-dd.img.xz | sudo dd bs=4M of=/dev/sdb デバイス名が不明な場合は cat /proc/partitions などのコマンドで調べる。 ** 起動 [#c943330c] microSDを本体のカードスロットにセットして電源ON(真ん中の四角いボタンを押す)。microSDが入っていれば、本体のOSではなくmicroSDのOS(ev3dev)が起動する ** ネットワークの接続 [#z38ad46a] wifiのドングルを使うのがおそらく最も簡単。 brickmanのメニューが表示されたら、 「Wireless and Networks」→「Wi-Fi」で無線ネットワークを選ぶ。 接続できたら、ディスプレイ上部に表示されている、DHCPで取得したアドレスを確認しておく。 ** sshでログイン [#ia48be56] IPアドレスが192.168.2.30の場合、パソコン側から ssh robot@192.168.2.30 でログインできる(デフォルトのUIDは「robot」、パスワードは「maker」)。 Windowsの場合はTeraTermなどを使えばよい。 localhost:~$ ssh robot@192.168.2.30 robot@192.168.2.37's password: _____ _ _____ _|___ / __| | _____ __ / _ \ \ / / |_ \ / _` |/ _ \ \ / / | __/\ V / ___) | (_| | __/\ V / \___| \_/ |____/ \__,_|\___| \_/ Debian jessie on LEGO MINDSTORMS EV3! The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed May 25 06:41:16 2016 from 192.168.2.21 robot@ev3dev:~$ * Python でインターラクティブに動かす [#s538f8e8] ** pythonの起動 [#id4e94b7] デフォルトではpython 2.7 が起動する。 robot@ev3dev:~$ python Python 2.7.9 (default, Mar 1 2015, 13:52:09) [GCC 4.9.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> ** モジュールのインポート [#gb5bbf8b] >>> import ev3dev.ev3 as ev3 ** モータのインスタンスを生成 [#u9916a64] >>> m = ev3.LargeMotor('outA') モータの各ポート名は、'outA' 'outB' 'outC' 'outD'。 小さい方のモータは、MediumMotor。 ** モータのリセット [#g87607de] >>> m.reset() ** モータを回転させる [#s3b12bed] モータのリセット後は、duty_cycle_sp(デューティ・サイクルのセットポイント)が0になっている。 回転させるためには、0以外の-100から100までの値を指定する。 >>> m.run_forever(duty_cycle_sp=30) あるいは、以下でも同じ動作。 >>> m.duty_cycle_sp=30 >>> m.run_forever() ** モータを止める [#p1e18470] >>> m.stop() モータの止め方は'coast' 'brake' 'hold'の3種類。デフォルトは'coast'。指定の方法は、 >>> m.stop(stop_command='brake') のように値を渡すか、 >>> m.stop_command='brake' >>> m.stop() のようにする。 新しいカーネル(Linux ev3dev 4.4.9-11-ev3dev-ev3)では、stop_commandがstop_actionに、 stop_commandsがstop_actionsに変更になっている。また、speed_spの値を指定しておかないとモータは回らない(最大値は1050)。 ** モータを一定時間回す [#vc2bab9e] >>> m.run_timed(time_sp=3000, duty_cycle_sp=50, stop_command='brake') timeで指定する時間の単位は1/1000秒。 ** モータを一定時間回す(sleep関数を使う方法) [#h602c8c4] >>> import time >>> m.run_forever(duty_cycle=50) >>> time.sleep(3) >>> m.stop() sleep関数を使うためにtimeモジュールをインポート。sleepで指定する時間の単位は1秒。 ** モータを特定の角度だけ回す [#mfa5974d] >>> m.run_to_rel_pos(position_sp=360, duty_cycle_sp=70, stop_command='hold') これは >>> m.reset() >>> m.run_to_abs_pos(position_sp=360, duty_cycle_sp=70, stop_command='hold') と同じ。 ** センサーの種類 [#i38f24e1] -TouchSensor タッチセンサ -ColorSensor カラーセンサ -UltrasonicSensor 超音波センサ -GyroSensor ジャイロセンサ -SoundSensor NXTのサウンドセンサ -LightSensor NXTのライトセンサ -InfraredSensor EV3の赤外線センサ(距離測定用) ** 超音波センサを使う [#n9745bd7] >>> us = ev3.UltrasonicSensor() >>> us.value() 112 デフォルトの単位はcm(US-DIST-CM)のはずだが、なぜかmmで値が表示されている。 ** 光センサを使う [#e95a60a1] モード一覧 >>> cs.modes [u'COL-REFLECT', u'COL-AMBIENT', u'COL-COLOR', u'REF-RAW', u'RGB-RAW', u'COL-CAL'] デフォルトのモードはCOL-REFLECT。 白い紙の1cmほど上で測ってみると >>> cs.value() 58 黒い紙だと大抵ひと桁の値になる。 ** タッチセンサを使う [#f3986658] >>> ts = ev3.TouchSensor('in3') >>> ts.value() 0 >>> ts.value() 1 タッチセンサが押されていない状態で0、押された状態で1。 ** ジャイロセンサを使う [#d647d973] >>> gs = ev3.GyroSensor() >>> gs.modes [u'GYRO-ANG', u'GYRO-RATE', u'GYRO-FAS', u'GYRO-G&A', u'GYRO-CAL'] >>> gs = ev3.GyroSensor() >>> gs.mode u'GYRO-ANG' >>> gs.value() -135 ** 応用 [#v7ce3ef9] >>> while ts.value() == 0: ... if cs.value() > 30: ... m.run_forever(duty_cycle_sp=50) ... else: ... m.stop(stop_command='brake') ... time.sleep(0.1) ... ** pythonの終了 [#s5162f6e] control-D * スクリプトを作ってみる [#p71ffa22] エディタ(nanoまたはvi)で次のようなスクリプトを作る。ファイル名は例えばtest.pyのようにpyという拡張子を付けておくと便利。 robot@ev3dev:~$ nano test.py #!/usr/bin/python # -*- coding: utf-8 -*- import ev3dev.ev3 as ev3 import time motor_left = ev3.LargeMotor('outA') motor_left.run_forever(duty_cycle_sp=50) time.sleep(3) motor_left.stop(stop_command='brake') ファイルを保存したら実行可能にする robot@ev3dev:~$ chmod +x test.py 実行する robot@ev3dev:~$ ./test.py ここで./は現在のフォルダ(ディレクトリ)を表す(ファイル名だけだとパスがつながっていないのでエラーになる) 2016年5月31からのこのページのだいたいの訪問者数: 本日&counter(today); 昨日&counter(yesterday); 合計&counter(all);