Pythonの関数を使う
毎回throttle1,throttle2,time.sleep()を使うのは手間がかかりますね。このロボットはCircuitPythonで動きますが、Pythonの関数を使うことができます。
#robotをもっと動かしやすくするサンプル
import board
import pwmio
import time
from adafruit_motor import motor
#DCモーターを初期化
m1a = pwmio.PWMOut(board.GP8, frequency=10000)
m1b = pwmio.PWMOut(board.GP9, frequency=10000)
motor1 = motor.DCMotor(m1a, m1b)
m2a = pwmio.PWMOut(board.GP10, frequency=10000)
m2b = pwmio.PWMOut(board.GP11, frequency=10000)
motor2 = motor.DCMotor(m2a, m2b)
#robotの動きを定義する関数
def forward(speed,move_time): #前進forward(スピード,時間を入力)
motor1.throttle = (speed)
motor2.throttle = (speed)
time.sleep(move_time)
def brake(wait_time): #ブレーキbrake(停止時間を入力)
motor1.throttle = 0
motor2.throttle = 0
time.sleep(wait_time)
forward(0.8, 2)
brake(1)
forward(0.2, 2)
brake(1)
def forward():
このdefはdefinitionです。これでPythonはfowardという関数を宣言します。カッコの中は引数といいます。このforward関数内で使用したいデータを決めます。この場合は速度(speed)と時間(move_time)とが必要です。motor1.throttleとmotor2.throttleにspeedを代入します。そしてtime.sleepにmove_timeを入れてあげます。そして実際のコードはforward(0.8, 2)としてみましょう。そうするとthrottleスピード0.8で2秒間動くのです。
前回まではmotor1.throttle = motor2.throttle= time.sleepと3行で書かれていたプログラムがforward(0.5, 2)と一行で完結しました。
def brake():
ブレーキ(brake)のときはどうでしょう?throttleは0固定なのでspeedは不要ですね。しかし止まっている時間(wait_time)は必要です。brake(1)で一秒間停止します。
ロボットの動きを考える
今このロボットは前進とストップしかできません。後退(backward)と左回転(left_rotate)、右回転(right_rotate)左折(left_turn)右折(right_turn)も加えましょう。次回はこれを完成させていきます。