Lok24
27.12.2019, 18:14

Editiert von
Lok24
27.12.2019, 18:15

+17Programmieren lernen in 5 Minuten

Hallo zusammen,

für alle die schon ein paar PoweredUp-Komponenten haben möchte ich mal zeigen wie schnell man da ein kleines Programm schreiben kann.

Hier im ersten Teil geht es um die Einrichtung
Wir brauchen:
Ein PoweredUp Hub (da sollte jedes tun)
Ein Motor (da sollte jeder tun, allerdings werden wir das Programm später verfeinern, dann braucht man Motoren, die ihre Stellung rückmelden, also Boost oder Technic)

Und wir wollen ein ja ein tolles MOC bewegen, hier ist es:

[image]



Und, last but not least, eine Installierte PoweredUp-App.

So, es geht los.
App starten, oben Links am Zahnrad auf Einstellungen,

[image]


Automatisch verbinden "aus" (nicht wischen, draufklicken)
Und natürlich die Palette auf "Experte"! (dazu später), Sprache nach Wahl.
Erste Erkenntnis: es gibt nirgendwo "speichern" Knöpfchen, alles wird immer sofort weggepackt, auch unsere Programme später.

Jetzt oben rechts "Erschaffen" wählen, und das fette rote "+"Feld für ein neues Programm. Namen vergeben, weiter, das linke Feld "Programmieren" wählen.

[image]



Dann sind wir hier:

[image]



Jetzt noch links oben auf das Bluetooth-Symbol klicken, das Hub einschalten und wenn es sich mit seinem Namen (einem anderen als bei mir) meldet drauftippen, dann wird es orange und dann grün... verbunden, LED am Hub leuchtet.

[image]


[image]



Und mit dem "schließen" Kreuz oben rechts wieder zum Programm.

So , die erste Minute ist um.
In der zweiten lernen wir, wie man das bedient.

Stay Tuned!



Dirk1313 , Thomas52xxx , Valkon , Flogo , RobbyRay , Saori , Cran , Plastik , sachsi , tomo , luther sloan , mcjw-s , tmctiger , cimddwc , JuL , Larry98 , WB1955 gefällt das (17 Mitglieder)


Lok24
27.12.2019, 18:46

Als Antwort auf den Beitrag von Lok24

Editiert von
Lok24
27.12.2019, 18:59

+10Re: Programmieren lernen in 5 Minuten - Minute 2

Hallo und willkommen beim zweiten Teil unseres Porgrammier-Expresskurs.

Wir sind hier:

[image]



Und wie geht das jetzt?

Wir haben vier Bereiche:
- den grauen Hintergrund mit dem gelben "Start"-Knopf, da klicken wir unser Programm zusammen.
- die 5 bunten Register unten, jedes hält eine Reihe von Befehlen vor, also tippen wir die mal der Reihe nach an:
- innerhalb der Register die "Programmblöcke", aus denen wir das Programm zusammenstellen
Gelb: Programmablauf
Orange: Sensoren
Grün: Motoren
Violett: Licht & Ton
Weiß: Mathe und Logik

Und ganz rechts das weiße mit den 3 Punkten: die Werkzeugleiste, mal auf- und wieder zuklappen.

Und jetzt das erste Programm!
Den violetten Tab antippen und das zweite Symbol berühren und mit dem Finger nach oben Richtung gelbes Symbol schieben. Wenn der Block einen dunkelgrauen Schatten wirft kann man ihn loslassen, er schnappt dann an die richtige Stelle

[image]


Jetzt auf den grünen Pfeil/den gelben Startblock tippen.
Das Licht am Hub geht aus.

Der violette Block kennt zwei Parameter, links den mit dem Steckersymbol, den lassen wir mal links liegen, und rechts den rot durchgestrichenen Kreis. Antippen, dann geht die Palette auf, Farbe wählen, außerhalb der Palette tippen (dann geht die zu) und Programm wieder starten. So einfach!

Einfach mal sinnfrei noch ein paar Blöcke drankleben, dann den letzten nehmen und ganz nach unten bis hinter die Blockleiste ziehen: weg, gelöscht. Und mal üben: es werden immer alle Blöcke rechts von dem Angetippten bewegt.

Durch Ziehen und Spreizen das Bild und den Ausschnitt vergrößern.

Als nächstes wollen wir mal den Motor bewegen!
Bis dann!



Valkon , Flogo , Dirk1313 , Thomas52xxx , Saori , Cran , Plastik , sachsi , tmctiger , JuL gefällt das (10 Mitglieder)


Lok24
28.12.2019, 09:56

Als Antwort auf den Beitrag von Lok24

Editiert von
Lok24
28.12.2019, 10:26

+12Re: Programmieren lernen in 5 Minuten - Minute 3

Hallo zusammen,


willkommen bei Minute 3, ein paar kleine Fingerübungen mit einem Motor.
Vorab: wenn ein Programm läuft ist rechts oben der rote viereckige Stop-Knopf. Wir werden ihn gleich brauchen:

So sieht unser erstes Programm aus:

[image]


Start und Motor an Port(Anschluss) A mit Geschwindigkeit 30.
Wenn man das startet läuft der Motor auch - hört aber nie mehr auf?
Also oben rechts "Stop" - Programm beendet.

Als Gegenmittel findet man im gelben Tab das Symbol für Programmende

[image]


Und nun - läuft der Motor gar nicht mehr, auch blöd.
Warum? Weil der Befehl "Motor" kommt und sofort darauf der Befehl "Programmende", und das stoppt alle Motoren.

Also im gelben Tab noch die Stoppuhr geholt, einfach hochschieben und dazwischenfügen, das geht von alleine, und lassen das Programmende weg (einfach ganz(!) nach unten ziehen) und ersetzen es durch "Motor Stop" (da gibt es zwei, die tun beide):

[image]


Ahhhhh! So wird's!

Jetzt lassen wir den Motor mal zurücklaufen (-30)

[image]


Geht auch.

Jetzt alles zusammenkleben, ein Lichtwechsel am Ende:

[image]



Ist aber langweilig, wenn es nur einmal läuft.
Im gelben Tab gibt es drei Schleifen-Blöcke:

[image]


Wir nehmen den linken (mit der runden Kerbe unten) und schieben ihn zwischen den Start-Block und unseren ersten Motorblock, er erweitert sich selbst und umschließt alles.
(ich habe noch eine Sanduhr und einen munteren Pfiff statt des Lichtwechsel eingefügt, aber das mag jeder selbst probieren.)

[image]



Zeit schon wieder um?
Beim nächsten mal betreiben wir unser MOC!

Grüße

Werner



Thomas52xxx , Flogo , tastenmann , Dirk1313 , Saori , Cran , Plastik , sachsi , , tmctiger , Ben® , JuL gefällt das (12 Mitglieder)


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)


Lok24
28.12.2019, 17:15

Als Antwort auf den Beitrag von Lok24

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

Hallo,

wie versprochen programmieren wir jetzt noch den Sensor dran, ein Farbsensor, angeschlossen an Port B.

(Vor den Versuchen bitte den Motor mit der Hand immer weg vom Anschlag drehen und immer dran denken, beim Sensor "B" einzutragen)

Hier ist der erste Versuch, der Motor soll loslaufen, wenn der Sensor rot erkennt. Das ist unser bekanntes Programm, nur nach dem Startblock ist die "Bedingungssanduhr" dazu gekommen, die kennen wir auch schon.
Sie wartet auf hier auf "rot".

[image]



Der kleine absichtlich freischwebende Block rechts zeigt die Sensorfarbe auf dem Display.
Das funktioniert, aber wie erwartet genau einmal.

Also flugs eine Schleife drum:

[image]



Das geht auch, aber wenn der Sensor weiter rot erkennt wird das immer wieder gestartet, nicht gut.
Also nochmal überlegen:
- Warte auf rot
- bewegen
- Warte bis rot weg

Das geht mit noch einer Bedingung am Ende:

[image]



Wenn das so aussieht wie oben:
Alles einmal kopieren und im zweiten Teil 2 x aus "rot" "grün" machen und einmal "30" in "-30" ändern.

So sieht das jetzt aus:

[image]



Aber dann müsste ich immer wissen was ich starten soll?
Nein.
Man kann die Startköpfe beide nacheinander drücken, oder noch viel einfacher oben rechts auf den grünen Pfeil, dann werden alle(!) Startblöcke auf der Oberfläche gestartete.

Jetzt abwechselnd rot und grün vor den Sensor halten....

Grüße

Werner

PS.: das kann man noch auf dutzende Arten anders machen, es gibt auch andere Blöcke die einem einiges abnehmen, aber die 5min sind rum....



Dirk1313 , Plastik , tmctiger , JuL , schaeng , Thomas52xxx gefällt das (6 Mitglieder)


simtau
28.12.2019, 20:02

Als Antwort auf den Beitrag von Lok24

Re: Programmieren lernen in 5 Minuten - Minute 5

Erst einmal Dankeschön für die Arbeit.

Wenn ich diesen vertikalen Spaghetticode sehe dann....
Naja ich kann es ja verstehen, dass Lego eine grafische Programmierung einer Textbasierten bevorzugt.
Aber ich finde diese Form einfach unnötig kompliziert und unverständlich. Ich sage nur ich muss noch 0.x sek warten weil das Programm sonst zu schnell den Motor stopt.
Da sollen Kinder von selber drauf kommen. Ohne Programmierkenntisse oder Dokumentation?
Ich habe Zweifel.
Irgendwie ist es von hinten durch die Brust ins Auge programmieren.

Meine Frage wäre.
Kann man auch zwei Stränge parallel laufen lassen.
Beispiel.
Ich habe zwei Garagentore mit je einem Motor und einem Sensor. Angeschlossen an einen Hub.
Und beide sollen gleichzeitig arbeiten.
Ginge das auch?

Mit besten Grüßen
Simon



Lok24
29.12.2019, 09:05

Als Antwort auf den Beitrag von simtau

Editiert von
Lok24
29.12.2019, 09:55

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

Hallo Simon,

simtau hat geschrieben:

Erst einmal Dankeschön für die Arbeit.

gerne, vielleicht hilft es dem einen oder anderen, einen Einstieg zu finden.

simtau hat geschrieben:
Wenn ich diesen vertikalen Spaghetticode sehe dann....

- Es ist horizontal
- Es ist genau kein Spaghetticode, denn es ist absolut linear
(Spaghetticode geht aber auch, mit den Flags)

simtau hat geschrieben:
Aber ich finde diese Form einfach unnötig kompliziert und unverständlich.

Wie wäre es einfacher? Scratch ist viel schlimmer.

simtau hat geschrieben:
Ich sage nur ich muss noch 0.x sek warten weil das Programm sonst zu schnell den Motor stopt.
Da sollen Kinder von selber drauf kommen.

Ja, natürlich.
Man spielt das mit zwei Kindern nach.
Das eine ruft "Lauf" und wartet es bis das andere Kind sich nicht bewegt.
Das ist aber *sofort", weil das "empfangende Kind" eine Reaktionszeit (Latenz) hat.
Man muss also einen Moment warten, bis es sich in Bewegung setzt.
Oder bis es sich meldet: Ich laufe jetzt (das wäre eine Programmalternative, die einfacher zu erklären wäre)

Und sie müssen auch nicht von selber drauf kommen, sie können jemand fragen, oder experimentieren: bis wohin läuft das Programm? An welcher Stelle macht es nicht das was ich möchte? Wo könnte die Ursache sein?

(Und Du hättest dasselbe Problem auch in Python oder C#, es hat gar nichts mit der "Sprache" zu tun)

simtau hat geschrieben:
Irgendwie ist es von hinten durch die Brust ins Auge programmieren.

Das könnte auch an mir liegen.....

simtau hat geschrieben:
Meine Frage wäre.
Kann man auch zwei Stränge parallel laufen lassen.
??? Genau das wird doch in meinem letzten Beitrag gezeigt?
Die Antwort ist "ja", das läuft wohl intern alles in eigenen Threads ab.
Sonst könnte man ja keinerlei Autos oder Roboter steuern.

Grüße

Werner



Dirk1313 gefällt das


Beobachter74
30.12.2019, 09:02

Als Antwort auf den Beitrag von Lok24

Re: Programmieren lernen in 5 Minuten

Gehen eigentlich mehrere Hubs in einem Programm?
Wohl nicht oder?
Szenario wäre sensorgesteuerter Wendezug Betrieb.
Sensor an stationärem Hub 2 steuert Motor an „rollendem“ Hub 1.
Es sei denn man baut den Sensor mit in den Zug ein!



Lok24
30.12.2019, 09:13

Als Antwort auf den Beitrag von Beobachter74

Editiert von
Lok24
30.12.2019, 09:17

+2Re: Programmieren lernen in 5 Minuten

Hallo,

Beobachter74 hat geschrieben:

Gehen eigentlich mehrere Hubs in einem Programm?
Wohl nicht oder?


Warum so pessimistisch?
Du suchst sowas hier, 2 hubs, 8 Motoren:


Es gehen bis zu vier Hubs.

Beobachter74 hat geschrieben:

Es sei denn man baut den Sensor mit in den Zug ein!

genau, sowas hier:



Beide Videos sind übrigens von mir

Falls Du noch Tipps dazu braucht: mach eine neuen Thread auf (dann finden das auch andere später einfacher über die Suche) und wie schauen gemeinsam, was wie geht!

(Für Deinen Vorschlag brauchte man glaube ich 2 stationäre Hubs, an jedem Ende einen...)

Grüße

Werner



Beobachter74 , Dirk1313 gefällt das


Beobachter74
31.12.2019, 10:13

Als Antwort auf den Beitrag von Lok24

Re: Programmieren lernen in 5 Minuten

Aaah!
Na da entdecke einer die Möglichkeiten!
War mir nicht klar. Danke dir!
Ich habe im Moment kein konkretes Projekt. Zwei Dinge habe ich allerdings im Kopf: Wendezug und Blocksteuerung.
Trigger war übrigens die neue Produktlinie von trixbrix „Control / Automation“.
Wenn es soweit ist, dann neuer Fred...



Lok24
31.12.2019, 10:20

Als Antwort auf den Beitrag von Beobachter74

Editiert von
Lok24
31.12.2019, 10:33

Re: Programmieren lernen in 5 Minuten

Beobachter74 hat geschrieben:

Aaah!
Na da entdecke einer die Möglichkeiten!

Das ist der richtige Geist.

Bei Fragen immer wieder hier melden, ich helfe gerne, wenn ich kann.



18 nachfolgende Beiträge sind ausgeblendet

Alle anzeigen Immer alle anzeigen

Gesamter Thread: