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.
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:
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:
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:
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:
Si observas con detenimiento la imagen, te darás cuenta que se generó a partir de espirales:
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:
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!