Chayah
04.07.2018, 20:46

Lego Mindstorms eV3- Hilfe

Hey,
ich habe ein Programm erstellt für Lego Mindstorms und ich kann mein Fehler null finden.
Er soll eine schwarze Linie folgen, wenn er rot in der Linie erkennt, dann hebt er diesen Gegenstand auf. Ist ein Hindernis vorhanden, umfährt er ihn. Das jedoch macht er nicht.
kann mir da jemand vllt helfen, wäre für jede Antwort oder eine alternative dankbar.

[image]



[image]




LG

Lego Mindstorms Anfängerin



jopiek
04.07.2018, 23:47

Als Antwort auf den Beitrag von Chayah

Re: Lego Mindstorms eV3- Hilfe

Beim Programmieren soll mann immer diese Sachen beobachten:
- Funktionelle Dekomposition: das große(re) Problem in kleine Problemen teilen, die kleine Problemlösungen zuerst überprüfen, dann die Problemen stück für stück zusammenbringen und pro Schritt wieder testen / anpassen / testen.
- Immer Übersicht behalten: du hast zu Viel und zu große Codeblocke gemacht, besser ist es Funktionen zu kombinieren und eine "My block" davon zu machen.
Ich garantiere das diese zwei Sachen die Auflösung bringen!!! (Ich bin Informatik Lehrer, im Abitur und Fachhochschule und habe viel Erfahrungen damit (auch mit EV3 Programmieren)).
Eine andere Tipp: du kannst Kommentar nutzen in die EV3 Umgebung, das Hilft auch mit Übersicht halten!



Lok24
05.07.2018, 09:42

Als Antwort auf den Beitrag von Chayah

Editiert von
Lok24
05.07.2018, 10:31

Re: Lego Mindstorms eV3- Hilfe

Hallo Chayah,

es fällt mir sehr schwer zu verstehen was das Programm macht, man erkennt leider auch nicht sehr viel.
Du hast ja schon ein paar gute Tips bekommen.

So sieht das bei mir aus:
Ich setze Kommentare über die Elemente, da wird das Programm nicht noch länger

[image]



Und hier ein "eigener" Block "Greifer" und darunter im Bild der Aufruf dazu:

[image]



Zu Deinem Problem:
Du hast offenbar zwei große "Einheiten" hintereinander. Die erst läuft linear durch und füttert die zweite.
Erster Schritt: anzeigen, was dieser erste Block ausgibt. Offenbar eine Zahl, der zweite erwartet 5,3 oder 0 (schlecht zu entziffern). Also am Ende des ersten Bildes eine Anzeige auf dem Display mit dem Ergebnis von der Variablen "Farbe" und dem Farb-Sensor-Wert.

Zum zweiten Teil: nicht so gut. Der untere Wert ist auch der Standardfall. Mache einen zusätzliche Fall auf, dahinein nur drei Töne nacheinander (oder die Lampen rot blinken lassen); dann weiß Du schon mal, dass etwas kommt, das Du so nicht erwartest.

Und in die drei Zweige jeweils auch verschiedene Töne oder Display-Anzeige, dann siehst oder hörst Du welcher durchlaufen wird.

Zur Logik:
der zweite "Block" wird offenbar nur durch die Farbe gesteuert, mal durch den Variablenwert, mal durch den Eingangswert = Ausgang Farbsensor. D.h. die sind immer gleich!

Schauen wir jetzt den oberen Teil an (5 oder3)
d.h bei Input = "5" & Farbe = "5" wird der obere Zweig durchlaufen - und der untere Teil, wenn Input = "5" & "Farbe" = 3. Das kann m.E. nie wahr sein. Das wäre nur sinnvoll, wenn zwischen den beiden Messungen eine größere Zeit liegt. Das ist also nicht sauber programmiert, da das Ergebnis von der Laufzeit des Programems abhängt.

In meinem zweiten Beispiel siehst Du das vielleicht: Der Eingabewert wird am Display angezeigt, das Licht rot, "Auf" und "Zu" werden verarbeitet, alles andere nicht (da sollte noch ein Fehler"ton" rein).

Falls es noch Fragen gibt kann ich auch ein kleines Beispiel einstellen.

PS: Vor allem gehört das Stop für "B+C" in den ersten Block....
So merkst Du Dir die Farbe, der Robot fährt aber noch, damit ändert sich die Farbe danach.

Grüße

Werner



Lok24
05.07.2018, 09:55

Als Antwort auf den Beitrag von jopiek

Editiert von
Lok24
05.07.2018, 10:19

+1Re: Lego Mindstorms eV3- Hilfe

Hallo,

jopiek hat geschrieben:

Beim Programmieren soll mann immer diese Sachen beobachten:
- Funktionelle Dekomposition: das große(re) Problem in kleine Problemen teilen, die kleine Problemlösungen zuerst überprüfen, dann die Problemen stück für stück zusammenbringen und pro Schritt wieder testen / anpassen / testen.
- Immer Übersicht behalten:

Und genau das ist etwas, das man Programmieren lernt, aber wichtiger als das Programmieren selbst ist: Aufagben und Projekte zu strukturieren und bei Problemen systematisch nach Lösungen zu suchen.

Das kann man überall im Leben brauchen.



Chayah gefällt das


Chayah
05.07.2018, 12:06

Als Antwort auf den Beitrag von jopiek

Re: Lego Mindstorms eV3- Hilfe

Danke für die Antworten.!!
es hat jetzt funktioniert.

ich habe da noch eine Frage:
wenn er zb. 3 mal bei Farbe blau stoppen soll und bei dritten mal eine extra Leistung (egal was) macht, wie kann ich das definieren ?

LG



Lok24
05.07.2018, 12:25

Als Antwort auf den Beitrag von Chayah

Editiert von
Lok24
05.07.2018, 12:47

Re: Lego Mindstorms eV3- Hilfe

Hallo,

Chayah hat geschrieben:

ich habe da noch eine Frage:
wenn er zb. 3 mal bei Farbe blau stoppen soll und bei dritten mal eine extra Leistung (egal was) macht, wie kann ich das definieren ?

Durch Zählen. Hier ein Beispiel, aber vorsicht bei Werten > 4
D.h. das muss man auch noch "sicher" programmieren, das ist nur eine Anregung.
Aber: da war Deine Vorgabe zu ungenau

[image]



Gesamter Thread: