「自動配送システム」を作りました。距離センサーを使った車です
こちらが公式の教員向けのレッスンプランです

自動配送システム
配送カートが意図した通り動くよう、プログラムの不具合を見つけて修正(デバッグ)する力を育成します。
進行方向に距離センサーがついています
裏側です。前進・後退用のモーター2つとハンドル操作用のモーター1つを搭載しています
こちらがプログラム。左ボタンを押した場合と、右ボタンを押した場合で異なる動きをします
Pythonだとこうなります。このプログラムだと、左ボタンの操作した後じゃないと、右ボタンの操作はできないので、厳密には上記のブロックプログラムと同じではありません
from spike import PrimeHub, DistanceSensor, Motor, MotorPair from spike.control import wait_for_seconds hub = PrimeHub() # 距離センサー distance_sensor = DistanceSensor('B') # 前進・後退用のモーター drive_motors = MotorPair('A', 'E') # ハンドル操作用モーター small_wheel_motor = Motor('C') # モーターのスピードを設定 small_wheel_motor.set_default_speed(100) drive_motors.set_default_speed(50) # ----- 左ボタンを押した場合 ----- hub.left_button.wait_until_pressed() small_wheel_motor.run_to_position(0) drive_motors.start() distance_sensor.wait_for_distance_closer_than(15, DistanceSensor.CM) drive_motors.stop() # ----- 右ボタンを押した場合 ----- hub.right_button.wait_until_pressed() small_wheel_motor.run_to_position(0) drive_motors.start() distance_sensor.wait_for_distance_closer_than(15, DistanceSensor.CM) drive_motors.stop() # ハンドル操作用のモーターを動かす small_wheel_motor.run_to_position(20) wait_for_seconds(1) # 後ろに進む drive_motors.move(-50, DistanceSensor.CM) drive_motors.stop() # ハンドル操作用のモーターを動かす(戻す) small_wheel_motor.run_to_position(0) wait_for_seconds(1) # 前に進む drive_motors.move(50, DistanceSensor.CM) drive_motors.stop()
ちょっと改造
距離センサーを下向きに付けてみました。段差があると止まる車です
プログラムはこちら。障害物で停止するのではなく、障害物がある限り進む・・・という考え方ですね