
Isto nasceu há 2 anos para ser um "saco de porrada" para o sumo robot do AVCampos e ficou esquecido numa caixa desde então.
Decidi dar-lhe um propósito mais condigno com uma modificação ultra-rápida, sem quaisquer modificações no hardware apenas adaptando muito ligeiramente o código para "line follower" que há 4 anos usei para ensaiar uma versão muito muito inicial do Pybricks no Robot Inventor hub
https://github.com/orgs/pybricks/discussions/149
o facto de praticamente não ter de alterar o código (e o que alterei foi essencialmente por ter mudado de hub, de RI para Technic) mostra o quão fiável é usar uma plataforma de desenvolvimento sólida e fiável como o Pybricks. Se estivesse a usar uma App da LEGO, passados 4 anos, tinha de reinstalar a App, chafurdar no file system do telemóvel antigo para extrair o programa antigo e introduzi-lo no novo para depois descobrir serem versões incompatíveis - sim, é uma crítica à LEGO.
o código:
Código: Selecionar todos
from pybricks.hubs import TechnicHub
from pybricks.parameters import Port, Color, Direction, Button
from pybricks.pupdevices import Motor, ColorDistanceSensor
from pybricks.tools import wait
hub = TechnicHub()
mL = Motor(Port.A, Direction.COUNTERCLOCKWISE)
mR = Motor(Port.B)
s = ColorDistanceSensor(Port.D)
SPEED = 50
TIME = 1
THRESHOLD = 10
KP = 2.5
hub.system.set_stop_button(None)
while not Button.CENTER in hub.buttons.pressed():
pass
while True:
v = s.reflection()
print(v)
steering = (v - THRESHOLD) * KP
mR.dc(SPEED + steering)
mL.dc(SPEED - steering)
a variável SPEED também foi reduzida substancialmente para evitar uma versão fast and furious e permitir a coexistência com outros line followers (mas provavelmente ainda terei de a diminuir mais)
Video fresquinho: