Thymio Helicóptero

Helicóptero simple

Este montaje utiliza las dos ruedas de Thymio para accionar dos hélices laterales:

runningheli.jpg

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:

structure.jpg

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.

mechanism.jpg

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:

moving-heli.jpg
full-view-heli.jpg
front-view-heli.jpg
cabine-heli.jpg
bottom-heli.jpg

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
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License