Lok24
28.12.2019, 14:36

Als Antwort auf den Beitrag von Lok24

Editiert von
Lok24
28.12.2019, 15:34

+4Re: Programmieren lernen in 5 Minuten - Minute 4

Hallo zusammen,

so, jetzt wird's ernst

Haben wir die ganze Zeit nur Befehle aneinandergereiht wollen wir diesmal
- eine Anforderung definieren
- das dazu passende Programm schreiben

Dazu brauchen wir so etwas wie im Bild, nämlich einen Motor mit zwei Anschlägen.

[image]


(das kann natürlich auch ganz anders aussehen)

Und es muss(!) ein Boost oder technic Motor sein, also ein "Tachomotor" denn nur die melden an das Hub zurück.

Und beim Programmieren darauf achten: der linke ist der falsche, wir brauchen den rechten (mit dem roten Kringel); bei den beiden Stop-Befehlen gibt es nur diese, egal für welchen Motortyp.

[image]



Die Aufgabe: hin und her fahren. Wozu?
Nun, Tor auf und zu machen, einen Aufzug hoch und runter oder oder...
Und nein, 3,725 sec durch Ausprobieren ermitteln und dann eintragen ist keine Lösung.

Damit waren wir ja gestartet:

[image]


Führt aber am Anschlag nur zu belasteter Mechanik und knurrenden Motoren.

Wie kommt man jetzt zu einer Lösung?
Einfach verbal formulieren, was zu tun ist und dann in Befehle umsetzen. Das genau ist Programmieren.

Also:
- Starte nach links
- mache nichts, warte, solange der Motor sich noch dreht
- wenn er steht schalte den Strom ab

Dazu können wir das Programm oben nehmen, aber die Zeit muss ja variabel sein. Daher mal die Sanduhr ersetzen durch die mit der dreieckigen Kerbe

[image]


Wenn man das laufen lässt sieht man den Sanduhr-Block gelb werden, hier steht das Programm gerade - und wartet auf eine Bedingung ....
... bitte rechts oben stoppen.

Wir wissen also jetzt auch: in die runden Aussparungen gehören meist Zahlen oder Buchstaben, in die dreieckigen Bedingungen.

Es fehlt die Bedingung wann das warten ein Ende haben soll, nämlich:
Wenn "Motorgeschwindigkeit = 0"
Wir finden im dem weißen Tab die Blöcke mit der Spitze oben, wir nehmen den mit "=".
Und schieben dann hier diesen winzigen Block in die linke 0, der Block liefert die Motorgeschwindigkeit.

[image]



Das sollte so aussehen:

[image]



Also: starte Motor an A mit 30, warte bis Motorgeschwindigkeit = 0, stoppe Motor an A.

Und das ... funktioniert leider nicht.

Warum? Es kommt der Motorbefehl, dann die Stop-Bedingung.
So schnell liefert der Motor als Wert aber noch 0, der Motor stoppt.
Eine Sanduhr mit 0.1 sec (besser 0.2sec) schafft Abhilfe:
Motor irgendwo in die Mitte stellen und dann das hier starten:

[image]



Das ganze nochmal duplizieren und hinterdranhängen, beim zweiten Motorbefehl "30" ersetzen durch "-30".
Zum Duplizieren auf die 3 Punkte im weißen Kreis unten rechts tippen, dann das + Symbol ganz links, dann den linken Motorblock antippen.

Sanduhren einstreuen, Schleife drum, aber das hatten wir ja schon.

[image]



So. Wer noch Lust hat kann mal mit den beiden verschiedenen STOP-Blöcken experimentieren. Der mit dem roten Quadrat schaltet den Motor ab und lässt ihn auslaufen, der mit zusätzlichen roten Ausrufezeichen bremst ihn schlagartig.



Grüße

Werner



Dirk1313 , Plastik , tmctiger , JuL gefällt das (4 Mitglieder)


Gesamter Thread: