Braço robótico feito utilizando o lego mindstorms ev3
- Eduardo Brennand Paranhos
- 19 de nov. de 2024
- 2 min de leitura
Neste post, veremos como construir, programar e utilizar um braço robótico feito em lego!

As instruções deste projeto estão disponíveis em: https://le-www-live-s.legocdn.com/sc/media/lessons/mindstorms-ev3/building-instructions/ev3-model-core-set-robot-arm-h25-56cdb22c1e3a02f1770bda72862ce2bd.pdf
Note que fizemos algumas alterações no projeto, pois trocamos o sensor de cor localizado próximo as engrenagens por um sensor de toque do lego NXT. Além disso, adicionamos um display nextion próximo ao brick, bem como outro sensor de toque do lego NXT, a fim de controlar a garra.


Para programá-lo, basta instalar o ev3dev no seu módulo brick e rodar este código nele, seguindo a numeração correta das portas explícitas no código:
#!/usr/bin/env pybricks-micropython from pybricks.hubs import EV3Brick from pybricks.ev3devices import Motor, TouchSensor, ColorSensor from pybricks.parameters import Port, Stop, Direction from pybricks.tools import wait, StopWatch, DataLog from pybricks.robotics import DriveBase from pybricks.media.ev3dev import SoundFile, ImageFile from pybricks.iodevices import UARTDevice from pybricks.nxtdevices import TouchSensor as nxttouch # 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. ev3.speaker.beep() gripper_motor = Motor(Port.A) elbow_motor = Motor(Port.B, Direction.COUNTERCLOCKWISE, [8, 40]) base_motor = Motor(Port.D, Direction.COUNTERCLOCKWISE, [12, 36]) base_switch = TouchSensor(Port.S1) display = UARTDevice(Port.S2, baudrate=9600, timeout=None) elbow_switch = nxttouch(Port.S3) arm_switch = nxttouch(Port.S4) elbow_motor.control.limits(speed=60, acceleration=120) base_motor.control.limits(speed=60, acceleration=120) elbow_motor.run_time(-30, 1000) elbow_motor.run(15) while not elbow_switch.pressed(): wait(10) elbow_motor.reset_angle(0) elbow_motor.hold() base_motor.run(-60) while not base_switch.pressed(): wait(10) base_motor.reset_angle(0) base_motor.hold() gripper_motor.run_until_stalled(200, then=Stop.COAST, duty_limit=50) #resetar o ângulo da mão gripper_motor.reset_angle(0) gripper_motor.run_target(200, -90) while True: leitura = display.read(length=1) ev3.screen.print(arm_switch.pressed()) gripper_motor.run_target(200, 0, then=Stop.HOLD, wait=False) if not arm_switch.pressed(): gripper_motor.run_target(200, -90, then=Stop.HOLD, wait=False) else: gripper_motor.run_target(200, 0, then=Stop.HOLD, wait=False) if 'F' in leitura: elbow_motor.run(-30) elif 'B' in leitura: elbow_motor.run(30) elif 'R' in leitura: base_motor.run(-30) elif 'L' in leitura: base_motor.run(30) else: elbow_motor.stop() base_motor.stop() elbow_motor.hold()
Agora veja como utilizar a máquina:
Comments