Thymio II como dibujante artístico

Thymio II dispone de un agujero central que te permite montar un lápiz para hacer dibujos. Una forma simple de dibujar, puede ser usando un control remoto o el sonido de las palmas; otra forma es programarlo. Aquí puedes encontrar algunos dibujos y los programas respectivos.

full-robot.jpg

La forma más sencilla de dibujar consiste en trazar secuencias de lineas rectas y curvas, con un temporizador que permita definir sus longitudes.

El siguiente código se vale del evento temperature que se emite cada segundo. La variable itera se utiliza para contabilizar tales eventos, de modo que su valor corresponde a los segundos transcurridos. Con tres estructuras condicionales if se declaran las secuencias:

  • girar cuando itera > 1,
  • avanzar avanzar cuando itera > 4,
  • e iteramos con el último if, reiniciamos itera = 0.
var itera = 0

onevent temperature
itera = itera + 1
if itera==1 then
    motor.left.target = 230
    motor.right.target = -120
end
if itera==4 then
    motor.left.target = 80
    motor.right.target = 80
end
if itera==7 then
    itera = 0
end

El resultado es este:

dessin-fleur-simple.jpg

Tambien puedes alternar entre avanzar y retroceder:

var itera = 0

onevent temperature
itera = itera + 1
if itera==1 then
    motor.left.target = 100
    motor.right.target = 90
end
if itera==4 then
    motor.left.target = -100
    motor.right.target = -70
end
if itera==7 then
    itera = 0
end

Aunque el código es muy similar anterior, el resultado es completamente diferente:

dessin-etoile-simple.jpg

Puedes alternar secuencias diferentes para lograr dibujos regulares. Si quieres interrumpir la regularidad puedes incluir una variable. En el siguiente ejemplo se consideró la variable speed que se incrementa regularmente la velocidad del robot, definiendo así la longitud de los trazos.

var itera = 0
var speed = 30

onevent temperature
itera = itera + 1
if itera==1 then
    motor.left.target = 230
    motor.right.target = -140
end
if itera==4 then
    motor.left.target = speed
    motor.right.target = speed
    speed = speed + 2
end
if itera==7 then
    itera = 0
end

El resultado es este:

dessin-fleur-croissante.jpg

Este es otro ejemplo de dibujo regular con una variable:

var itera = 0
var speed = 20

onevent temperature
itera = itera + 1
if itera==1 then
    motor.left.target = 140
    motor.right.target = -140
end
if itera==4 then
    motor.left.target = speed
    motor.right.target = speed
    speed = speed + 2
end
if itera==7 then
    itera = 0
end

El resultado:

dessin-etoile-croiss.jpg

Si observas con detenimiento la imagen, te darás cuenta que se generó a partir de espirales:

dessin-etoile-explique.jpg

Finalmente, puedes generar espirales más explícitas así: avanzar, retroceder solo un poco, girar, reducir la velocidad, y así sucesivamente. Este código te muestra como hacerlo:

var itera = 0
var speed = 256
timer.period[0] = 1000 # 1000ms = 1s 

onevent timer0
itera = itera + 1
if itera==1 then
    motor.left.target = speed
    motor.right.target = speed
end
if itera==4 then
    motor.left.target = -speed
    motor.right.target = -speed
end
if itera==6 then
    motor.left.target = -40
    motor.right.target = 40
    speed = speed - (speed / 10)
end
if itera==7 then
    itera = 0
end

Y esta es la espiral:

spiral-700.jpg

Y aquí te lo presentamos en acción:

Esperamos que estés motivad@ a probar estos códigos tan sencillos que producen resultados tan interesantes. No dudes en publicar en esta página tus obras de arte!

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License