[ev3dev×Python]   単一モーターの制御

この記事はPythonでev3を操作してみたい人のための記事です。
今回はLモーターとMモーターをそれぞれ制御していきたいと思います。


#目次
0 . 用意するもの
1 . Lモーターの制御
2 . Mモーターの制御
3 . プログラムの実行について


#0.用意するもの
◯ ev3(インテリジェントブロック)
◯ Lモーター/Mモーター
◯ パソコン(VSCode)
◯ bluetooth
◯ microSD
◯ [資料](https://buildmedia.readthedocs.org/media/pdf/python-ev3dev/latest/python-ev3dev.pdf)(これをみながら進めていくのがオススメです。)
　

#1.Lモーターの制御

####1-0 . Lモーターをずっと回転させるプログラム
```lmotor00.py
#!/usr/bin/env python3

#必要なものだけをimportする。
from ev3dev2.motor import LargeMotor, OUTPUT_A

#インスタンスの生成
L_A = LargeMotor(OUTPUT_A)

#無限ループ
while True:
    #スピード50で、ずっと回転させる
    L_A.on(50)
```
**Point** : #!からはじまる1行目はプログラムをインテリジェントブロックから実行するために必要なので、全てのプログラムに書く必要があります。
※シバンについて詳しく知りたい方は[こちらの記事](https://gammasoft.jp/python/python-shebang/)がわかりやすいのでみてみてください。

**Point** : プログラムを終了する方法
① VSCodeの画面上部に出てくるオレンジ色の四角い停止ボタンを押す
　or
② インテリジェントブロックの左上のボタンを押す

**Point** : MINDSTORMSでプログラムすると下のようになります。
![スクリーンショット 2020-06-15 18.41.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/7195971a-ce7f-6045-488a-dc434a189910.png)









####1-1 . Lモーターを一定時間回転させるプログラム
```lmotor01.py
#!/usr/bin/env python3
#必要なものだけをimportする。
from ev3dev2.motor import LargeMotor, OUTPUT_A

#インスタンスの生成
L_A = LargeMotor(OUTPUT_A)

#3秒間回転させる
L_A.on_for_seconds(50,3)
```
**Point** : この場合、50のスピードで3秒間回転して止まる

**Point** : on_for_seconds(speed, seconds, brake=True, block=True)
指定した秒数回転させる

**Point** : on_for_seconds(スピード,秒数,~~)などは関数といいます。
関数は、()のなかの情報を使って決められた出力をする出力装置のようなものです。
この場合はev3devが用意してくれた関数をそのルールに従いながら使っています。

**Point** : MINDSTORMSでプログラムすると下のようになります。
![スクリーンショット 2020-06-15 20.16.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/e049c08c-e696-27be-b865-080ca1af1ca8.png)





####1-2 . Lモーターを一定角度回転させるプログラム
```lmotor02.py
#!/usr/bin/env python3

#必要なものだけをimportする
from ev3dev2.motor import LargeMotor, OUTPUT_A

#インスタンスの生成
L_A = LargeMotor(OUTPUT_A)
#モーターを1080度回転させる
L_A.on_for_degrees(50,1080)
```
**Point** : この場合、50のスピードで1080度回転して止まる

**Point** : on_for_degrees(speed, degrees, brake=True, block=True)
指定した角度回転する

**Point** : MINDSTORMSでプログラムすると下のようになります。
![スクリーンショット 2020-06-15 20.29.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/b3176228-eed5-dadc-b625-3b6c2a977f9b.png)








####1-3 . Lモーターを一定数回転させるプログラム
```lmotor03.py
#!/usr/bin/env python3

#必要なものだけをimportする
from ev3dev2.motor import LargeMotor, OUTPUT_A
#インスタンスを生成する
L_A = LargeMotor(OUTPUT_A)
#5回転する
L_A.on_for_rotations(50,5)
```
**Point** : この場合、50のスピードで5回転して止まる

**Point** : on_for_rotations(speed, rotations, brake=True, block=True)
指定した回数回転する

**Point** : MINDSTORMSでプログラムすると下のようになります。
![スクリーンショット 2020-06-15 20.37.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/f9f67c9a-e6c2-aa9d-ca60-2979930ecc89.png)














#2.Mモーターの制御

import するのが MediumMotor に変わるだけです。
on_for_rotaions()などの関数もLモーターの時と同様に使えます。

####2-0.Mモーターをずっと回転させるプログラム
```mmotor00.py
#!/usr/bin/env python3

#必要なものだけをimportする
from ev3dev2.motor import MediumMotor, OUTPUT_A
#インスタンスの生成
m_A = MediumMotor(OUTPUT_A)
#無限ループ
while True:
    #ずっと回転させる
    m_A.on(50)
```

**Point** : while〜: は繰り返しの処理をする時に使います。
`while True:` は「真の間ずっと〜する」 といういわゆる **無限ループ**です。

**Point** : Pythonではブロック処理はインデント(字下げ)で指定します。
詳しく知りたい方は[こちらの記事](https://www.javadrive.jp/python/if/index2.html)がわかりやすいのでみてみてください！

**Point** : インスタンス
この場合の `m_A` をプログラムでは**インスタンス**といいます。
```m_A = MediumMotor(OUTPUT_A)``` を、**インスタンスの生成**といいます。

インスタンスについての参考記事
[［Python入門］クラスの基礎知識](https://www.atmarkit.co.jp/ait/articles/1907/26/news020.html)

 　
**Point** : MINDSTORMSでプログラムすると下のようになります。
![スクリーンショット 2020-06-15 18.04.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/46741490-1116-4816-8438-6ff0cc9b1eb4.png)











#3.プログラムの実行について

もしやり方を忘れてしまったら、[前回書いた記事](https://qiita.com/masterkeaton12/items/938457911b0f3f25e161#4%E6%96%B0%E8%A6%8F%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E4%BD%9C%E6%88%90)を参照してください！




#最後に

読んで頂きありがとうございました！！
次回は複数のモーターの制御について書いていきたいと思います！

より良い記事にしていきたいので
　◯こうした方がわかりやすい
　◯ここがわかりにくい
　◯ここが間違っている
　◯ここをもっと説明して欲しい
などの御意見、御指摘のほどよろしくお願い致します。