Para os mais especializados em mecânica e electrónica em LEGO.
CyberX
Sócio
Mensagens: 4558 Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:
Mensagem
por CyberX » 06 jun 2020, 12:58
Não gosto deste bicho, é lento como um cágado.
Mas com pybricks (saiu agora a versão alpha para Control+) ainda consigo suportá-lo.
VIDEO
Código: Selecionar todos
hub = CPlusHub()
sensor1 = ColorDistanceSensor(Port.A)
motor1 = Motor(Port.B)
motor2 = Motor(Port.D)
motor1.run_target(200,0,wait=True)
while True:
if sensor1.reflection() < 30:
hub.light.on(Color.RED)
motor1.run_target(400,60,wait=True)
motor2.run(700)
wait(50)
motor2.stop()
hub.light.off()
else:
hub.light.on(Color.GREEN)
motor1.run_target(400,-60,wait=True)
motor2.run(700)
wait(50)
motor2.stop()
hub.light.off()
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
CyberX
Sócio
Mensagens: 4558 Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:
Mensagem
por CyberX » 06 jun 2020, 14:20
Conchas Escreveu: 06 jun 2020, 14:10
Mas porque raio é que isso é tão lento!??...
1. Eu sou uma bosta de programador, foi isto que me saiu ao fim de uma hora
2. O carro é mesmo uma bosta
3. Os motores PU são uma bosta
4. Já disse que não gosto deste bicho, que é lento como um cágado?
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Conchas
Direcção
Mensagens: 16131 Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada) / Sesimbra
Contacto:
Mensagem
por Conchas » 06 jun 2020, 14:41
Ok, o problema tem de ser mesmo o código uma beta muito carunchosa.
Do carro não é certamente...
FCorreia
#EUusoOmeuLUGBULKnosEVENTOSdaPLUG
We are working to build a better
LEGO Fan, a lifelong experience - Play Well (Leg Godt)
Sanjoanense 2026, 3-5 de Outubro
CyberX
Sócio
Mensagens: 4558 Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:
Mensagem
por CyberX » 06 jun 2020, 15:00
Conchas Escreveu: 06 jun 2020, 14:41
Ok, o problema tem de ser mesmo o código uma beta muito carunchosa.
Do carro não é certamente...
Não é pá, já editei o código para ser mais rápido. Não estou para me meter em PIDs, isto é um two-step basico.
Mas o carro
é lento como um cágado gordo.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Conchas
Direcção
Mensagens: 16131 Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada) / Sesimbra
Contacto:
Mensagem
por Conchas » 06 jun 2020, 15:05
Um P é o suficiente para trabalhar muito do que isso na grande maioria dos casos.
É certe que sendo uma drive base com steering, pode introduzir aqui algum efeito indesejado, mas mesmo assim não devia ser nada extraordinariamente difícil de controlar.
Os motores têm de trabalhar em continuo.
Acho que esses "Wait" e "Wait=true" estão a lixar tudo!
Uns comentários no código para saber qual motor é qual e o significado das constantes, tb não ia nada mal...
FCorreia
#EUusoOmeuLUGBULKnosEVENTOSdaPLUG
We are working to build a better
LEGO Fan, a lifelong experience - Play Well (Leg Godt)
Sanjoanense 2026, 3-5 de Outubro
CyberX
Sócio
Mensagens: 4558 Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:
Mensagem
por CyberX » 06 jun 2020, 15:08
VIDEO
Código: Selecionar todos
hub = CPlusHub()
sensor1 = ColorDistanceSensor(Port.A)
motor1 = Motor(Port.B)
motor2 = Motor(Port.D)
motor1.run_target(200,0,wait=True)
while True:
if sensor1.reflection() < 30:
hub.light.on(Color.RED)
motor1.run_target(600,60,wait=True)
motor2.dc(30)
wait(50)
motor2.stop()
hub.light.off()
else:
hub.light.on(Color.GREEN)
motor1.run_target(600,-60,wait=True)
motor2.dc(30)
wait(50)
motor2.stop()
hub.light.off()
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
CyberX
Sócio
Mensagens: 4558 Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:
Mensagem
por CyberX » 06 jun 2020, 15:11
Conchas Escreveu: 06 jun 2020, 15:05
Uns comentários no código para saber qual motor é qual e o significado das constantes, tb não ia nada mal...
Comentários?
Isto é "agile" à boa maneira tuga, fast release to market, comenta-se depois a menos que pagues
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
CyberX
Sócio
Mensagens: 4558 Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:
Mensagem
por CyberX » 06 jun 2020, 15:23
Pronto, comentários e o carro nunca pára. Não há video, é muito semelhante ao anterior (apenas mais fluido):
Código: Selecionar todos
hub = CPlusHub()
sensor1 = ColorDistanceSensor(Port.A)
mStear = Motor(Port.B)
mMove = Motor(Port.D)
ReflectionTHRESHOLD=30 # light sensor reflection read, percent
TurnZERO = 0
TurnLEFT = -60 #angle degrees
TurnRIGHT = -TurnLEFT
MoveDUTY = 30 # Duty Cycle, percent
MoveTime = 50 # milliseconds
mStear.run_target(200,TurnZERO,wait=True)
while True:
if sensor1.reflection() < ReflectionTHRESHOLD:
hub.light.on(Color.RED)
mStear.run_target(600,TurnRIGHT)
mMove.dc(MoveDUTY)
wait(MoveTime)
hub.light.off()
else:
hub.light.on(Color.GREEN)
mStear.run_target(600,TurnLEFT)
mMove.dc(MoveDUTY)
wait(MoveTime)
hub.light.off()
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
CyberX
Sócio
Mensagens: 4558 Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:
Mensagem
por CyberX » 06 jun 2020, 15:35
Sim, o mMove.dc() pode sair do Loop ja que o carro não pára.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
gads
Administrator
Mensagens: 6370 Registado: 11 set 2006, 23:58
Localização: Oeiras
Mensagem
por gads » 06 jun 2020, 15:52
Comecei a ver o video antes de ler os comentários e ainda me questionei "porque raio é que isto está em slow motion?"
CyberX
Sócio
Mensagens: 4558 Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:
Mensagem
por CyberX » 06 jun 2020, 15:54
Pronto, versão revista e diminuida
MoveDUTY maiores e TurnLEFT/RIGHT maiores serão possíveis com pistas com curvas menos apertadas - infelizmente a que montei à pressa não é assim.
Código: Selecionar todos
hub = CPlusHub()
sensor1 = ColorDistanceSensor(Port.A)
mStear = Motor(Port.B)
mMove = Motor(Port.D)
ReflectionTHRESHOLD=30 # light sensor reflection read, percent
TurnZERO = 0
TurnLEFT = -70 # angle, degrees
TurnRIGHT = -TurnLEFT
TurnSpeed = 600 #
MoveDUTY = 40 # Duty Cycle, percent
mStear.run_target(200,TurnZERO,wait=True)
mMove.dc(MoveDUTY)
while True:
if sensor1.reflection() < ReflectionTHRESHOLD:
hub.light.on(Color.RED)
mStear.run_target(TurnSpeed,TurnRIGHT)
else:
hub.light.on(Color.GREEN)
mStear.run_target(TurnSpeed,TurnLEFT)
Última edição por
CyberX em 06 jun 2020, 15:59, editado 3 vezes no total.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Conchas
Direcção
Mensagens: 16131 Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada) / Sesimbra
Contacto:
Mensagem
por Conchas » 06 jun 2020, 15:56
Estás a ver!?
Muito melhor assim.
E pelos vistos melhorou a performance.
Agora só mexendo!...
FCorreia
#EUusoOmeuLUGBULKnosEVENTOSdaPLUG
We are working to build a better
LEGO Fan, a lifelong experience - Play Well (Leg Godt)
Sanjoanense 2026, 3-5 de Outubro
CyberX
Sócio
Mensagens: 4558 Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:
Mensagem
por CyberX » 06 jun 2020, 15:56
Conchas Escreveu: 06 jun 2020, 15:56
Estás a ver!?
Muito melhor assim.
E pelos vistos melhorou a performance.
Agora só mexendo!...
Nã, o bicho é mesmo mau.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Conchas
Direcção
Mensagens: 16131 Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada) / Sesimbra
Contacto: