Thymiodrawing

Thymio zeichnet

Der Roboter Thymio II hat eine zentrale Bohrung, die einen Markierungsstift hält, zum Beispiel, um die Zeichnungen zu machen. Es gibt verschiedene Möglichkeiten, zu entscheiden, was zu zeichnen. Ein einfacher Weg ist, den Roboter fernzusteuern (durch eine IR-Fernbedienung oder durch Handklatschen), um ihn so zu zeichnen, wie er gewünscht wird. Der andere Weg ist durch Programmierung. Diese Seite zeigt einige Beispiele von Programmen mit den entsprechenden Zeichnungen.

full-robot.jpg

Die einfachste Art des Zeichnens besteht darin, Kurven- und Geradenfolgen mit einem Zeitzähler zu erstellen, der die Längen bestimmt.

Hier ist ein kleines Programm, das das Temperatur-Lese-Ereignis verwendet, das jede Sekunde auftritt, und macht eine Schleifenzahl mit der Variablen itera, die um eins pro Sekunde zunimmt. Mit drei if triggert es verschiedene Sequenzen (drehen, wenn itera ist 1, voraus, wenn itera ist 4) und Schleifen mit dem letzten if:

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

Dieser Code ergibt diese Zeichnung:

dessin-fleur-simple.jpg

Als Variante kann auch vorwärts und rückwärts gefahren werden:

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

Die damit erstellte Zeichnung ist ziemlich anders:

dessin-etoile-simple.jpg

Man kann sehr unterschiedliche Sequenzen abwechseln, die regelmäßige Zeichnungen machen. Will man die Regelmäßigkeit brechen, kann eine Variable hinzugefügt werden. Im folgenden Beispiel wird eine regelmäßig erhöhte ({Geschwindigkeit}} Variable hinzugefügt, die die Länge der Geraden durch Erhöhung der Geschwindigkeit des Roboters definiert:

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

Das Resultat ist folgende Zeichnung:

dessin-fleur-croissante.jpg

Ein anderes Besipiel mit einer Variabeln:

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

Hier das Resultat:

dessin-etoile-croiss.jpg

Wenn Sie einen sorgfältigen Blick haben, sehen Sie, dass diese Zeichnung mit zwei Spiralen errichtet wird, besser hier sichtbar:

dessin-etoile-explique.jpg

Schließlich ist es möglich, eine klarere Spirale mit dem folgenden Code zu bilden, wo sich der Roboter vorwärts bewegt, dann rückwärts für eine kürzere Zeit, dann dreht und verringert die Geschwindigkeit um 1/10 und so weiter:

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

Hier das Ergebnis:

spiral-700.jpg

Und zun Schluss eine echte Spirale:

spiral.jpg

Mit dem Code, mit dem die Zeichnung der Spirale mit Vorwärts- und Rückwärtstasten gestartet und gestoppt werden kann:

var parti                #started flag
timer.period[0]=100     # 100ms
call leds.top(0, 0, 32)    # bleu

onevent button.forward    #start
    parti=1
    motor.left.target = -200
    motor.right.target = 200
    call leds.top(0, 32, 0)

onevent button.backward        # stop
    parti=0
    call leds.top(32, 0, 0)
    motor.left.target = 0
    motor.right.target = 0

onevent timer0    #every 100ms = 0.1s
    if parti ==1 then
        motor.left.target = motor.left.target+1
        motor.right.target = motor.right.target+1
    end

dieses Video zeigt den Prozess:

Ich hoffe, ich habe Ihnen den Wunsch, diese einfachen Programme, die sehr unterschiedliche Muster geben zu testen gegeben haben. Zögern Sie nicht, Ihre Ergebnisse auf dieser Seite zu posten!

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