Thymio disegnatore

Il robot Thymio II ha un foro centrale che può contenere un pennarello, per esempio, per effettuare i disegni. Ci sono diversi modi per decidere cosa disegnare. Un modo semplice è quello di controllare il robot da remoto (con un telecomando IR o con battito delle mani) in modo da farlo disegnare come desiderato. L'altro modo è quello di selezionare il disegno programmaticamente. Questa pagina presenta alcuni esempi di programmi con disegni corrispondenti.

full-robot.jpg

Il modo più semplice è quello di disegnare sequenze di curve e linee rette, con un contatore di tempo che determina le lunghezze delle linee stesse.

Ecco un piccolo programma che sfruttando l'evento lettura della temperatura, che si verifica ogni secondo come clock, fa un loop di conteggio usando la variabile itera che cosí aumenta di uno ogni secondo. Con tre if si innescano diverse sequenze (gira quando Itera è 1, anticipo quando Itera è 4) e ripristino a zero (chiudendo il loop) con l'ultimo caso:

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

Il disegno risultante é il seguente:

dessin-fleur-simple.jpg

In alternativa ci si puó muovere avanti e indietro con un programma molto simile:

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

Il disegno risultante é riportato nella figura seguente:

dessin-etoile-simple.jpg

Si possono alternare diverse sequenze che rendono i disegni regolari. Se si vuole interrompere la regolarità una variabile può essere aggiunta. L'esempio seguente aggiunge una variabile speed che viene incrementata regolarmente e che definisce la lunghezza delle rette aumentando la velocità del robot:

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

Il disegno risultante é il seguente:

dessin-fleur-croissante.jpg

Un altro esempio di figura regolare ottenuta con una variabile:

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

Qui é riportata l'immagine che si ottiene:

dessin-etoile-croiss.jpg

se si guarda con attenzione, si vede che questo disegno è costruito con due spirali, meglio visibile qui:

dessin-etoile-explique.jpg

Infine è possibile effettuare una spirale più chiara con il seguente codice, in cui il robot si muove in avanti, quindi indietro per un tempo più breve, e poi si riduce la velocità di 1/10, e così via:


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
[[/code]]

Qui é l'immagine risultante:

spiral-700.jpg

Questo video illustra l'intera sequenza di disegno:

Speriamo di avervi fatto venire il desiderio di provare questi semplici programmi che danno dei disegni molto diversi. Non esitate a pubblicare i vostri risultati su questa pagina!

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