Lモーターとカラーセンサーを使って、MicroPythonで赤色検知器を作った。
動作概要
起動するとカラーセンサーが180°回転し、赤色を検出するとビープが鳴って回転が止まる。
回転が止まった状態でカラーセンサーに緑色を見せるとカラーセンサーは元の位置に戻って待機状態(回転しない状態)になる。待機状態から再度赤色検出モードにするには青色を見せるとカラーセンサーが再度回転を始める。


ソースコード
#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile
# This program requires LEGO EV3 MicroPython v2.0 or higher.
# Click "Open user guide" on the EV3 extension tab for more information.
# Create your objects here.
ev3 = EV3Brick()
# Write your program here.
deg = 0
delta = 1
motor_d = Motor(Port.D, Direction.CLOCKWISE)
color_s = ColorSensor(Port.S3)
while True:
while True:
if color_s.color() == Color.RED:
break
motor_d.run_target(15, deg)
deg += delta
if deg >= 180:
delta = -delta
elif deg <= 0:
delta = -delta
ev3.speaker.beep()
while True:
if color_s.color() == Color.GREEN:
break
ev3.speaker.beep()
deg = 0
delta = 1
motor_d.run_target(90, deg)
while True:
if color_s.color() == Color.BLUE:
break
ev3.speaker.beep()