Lego Mindstorms EV3 con micropython

La documentación para lograr el control de los Lego Midstorms EV3 con micropython puede ser consultada a continuación:

Configuración

Para usar micropython con el LEGO Mindstorms EV3 debemos tener:

  • Una microSD con micropython.
  • Visual Studio Code con la extensión "LEGO Mindstorms EV3 MicroPython".

y ya con esto tendremos el entorno de trabajo configurado.

Ejemplo seguidor de linea

A continuación presentamos un ejemplo de un robot seguidor de linea, el ejemplo esta sin comentarios. Para descargar el código comentado hacer clic aqui

from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import (Port, Stop, Direction, Button, Color,
                                 SoundFile, ImageFile, Align)
from pybricks.tools import print, wait, StopWatch
from pybricks.robotics import DriveBase

color_sensor = ColorSensor(Port.S4)
distance_sensor = UltrasonicSensor(Port.S1)

left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

wheel_diameter = 56
axle_track = 114

robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)
brick.display.clear()

def calibrate():
    brick.display.text("WHITE?")
    brick.sound.beep()
    while not any(brick.buttons()):
        wait(10)
    white = color_sensor.reflection()

    while any(brick.buttons()):
        wait(10)

    brick.display.text("BLACK?")
    brick.sound.beep()
    while not any(brick.buttons()):
        wait(10)
    black = color_sensor.reflection()
    return black, white    

black, white = calibrate()
reference = (black + white)/2
Kp = 1

brick.display.text("Reference at: "+str(reference))

while True:

    measure = color_sensor.reflection()
    error   = reference - measure 

    robot.drive(100, Kp*error)

    wait(50)