Helicóptero simple
Este montaje utiliza las dos ruedas de Thymio para accionar dos hélices laterales:
Puedes activar y regular la velocidad de las hélices utilizando el modo básico violeta. Lo interesante de esta construcción es que las hélices se controlan independientemente, lo que lo hace más realista: movimiento en todas las direcciones además de la inclinación. Utilizando el acelerómetro y otros sensores, podemos pilotear el helicóptero de manera más inteligente y divertida:
- Si el helicóptero se inclina lateralmente, la hélice que está más abajo, gira más rápido que la otra para "compensar" su orientación.
- Si el helicóptero se inclina hacia adelante, ambas hélices giran más rápido.
- Las hélices se detienen cuando el helicóptero aterriza. Para esto, puedes utilizar los sensores de proximidad de la parte inferior.
- Puedes usar el parlante para simular el sonido del helicóptero (no se recomendado para padres).
Estos son algunos de los detalles de la construcción:
Solo la estructura, sin Thymio; para que puedas ver mejor los detalles:
Detalle de la transmisión entre las ruedas y las hélices. Se hace en dos etapas:
Primero una multiplicación de velocidad y luego el paso de rotación horizontal a vertical.
El siguiente código hace que las hélices giren solamente cuando el helicóptero se incline hacia adelante:
onevent acc # luego de leer los acelerómetros,
if acc[1]<-3 then # se verifica el valor del acelerómetro que mide la inclinación hacia adelante sea negativo.
motor.left.target=-acc[1]*40 # se multiplica el valor de aceleración por 40 para obtener la velocidad de las ruedas (hélices).
motor.right.target=-acc[1]*40
else # si no se mide nada, se asigna 0.
motor.left.target=0
motor.right.target=0
end
Helicóptero avanzado
Este segundo modelo sigue exactamente el mismo principio que el helicóptero simple, pero se basa en el kit LEGO Technic 8258. El diseño resulta más interesante:
Este helicóptero se puede programar como el anterior. Sin embargo, desarrollando un poco más el código, puedes hacer que Thymio despegue así:
Este es el código que se utilizó para la demostración:
var status = 1
var rampe_status = 0
var vitesse = 0
onevent temperature
if status==1 then
call leds.top(0,0,0)
call leds.temperature(0,0)
call leds.prox.v(0,0)
call leds.bottom.left(0,0,0)
call leds.bottom.right(0,0,0)
call leds.circle(0,0,0,0,0,0,0,0)
status = 2
else if status==2 then
call leds.top(0,32,0)
status = 3
else if status==3 then
call leds.top(0,0,0)
status = 4
else if status==4 then
call leds.prox.h(1,0,0,0,0,0,0,0)
call leds.bottom.left(32,0,0)
call leds.bottom.right(0,0,0)
status = 5
else if status==5 then
call leds.prox.h(0,0,0,0,0,1,0,0)
call leds.bottom.left(0,0,0)
call leds.bottom.right(32,0,0)
status = 6
else if status==6 then
call leds.prox.h(1,0,0,0,0,0,0,0)
call leds.bottom.left(32,0,0)
call leds.bottom.right(0,0,0)
rampe_status=1 # la velocidad se incrementa linealmente (rampa de velocidad)
status = 7
else if status==7 then #a partir de aquí (status 7 y 8) intermitentes derecha-izquierda.
call leds.prox.h(0,0,0,0,0,1,0,0)
call leds.bottom.left(0,0,0)
call leds.bottom.right(32,0,0)
status = 8
else if status==8 then
call leds.prox.h(1,0,0,0,0,0,0,0)
call leds.bottom.left(32,0,0)
call leds.bottom.right(0,0,0)
status = 7
end end end end end end end end
onevent buttons
when button.center == 1 do
status = 0
rampe_status=-1
call leds.top(0,0,0)
call leds.temperature(0,0)
call leds.prox.v(0,0)
call leds.bottom.left(0,0,0)
call leds.bottom.right(0,0,0)
call leds.circle(0,0,0,0,0,0,0,0)
end
when button.forward== 1 do
call leds.circle(31,31,31,31,31,31,31,31)
status = 1
end
onevent prox #juste pour faire cela toutes les 100ms
if rampe_status==1 then #rampa de velocidad creciente
vitesse = vitesse + 10
motor.left.target = vitesse
motor.right.target = vitesse
if vitesse > 600 then
rampe_status=0
end
end
if rampe_status==-1 then
vitesse = vitesse - 10 #rampa de velocidad decreciente
if vitesse <0 then
rampe_status=0
else
motor.left.target = vitesse
motor.right.target = vitesse
end
end