Navigation
06.03.2019, 13:56

EV3 Frage zur Pausierung von Programmschleifen

LLL,

gibt es beim EV3 mit Bordmitteln die Möglichkeit eine Programmschleife solange zu pausieren, wie der Berührungssensor gedrückt gehalten wird?

LG,
_Rene


Instagram | www.BRICK.art


Lok24
06.03.2019, 13:58

Als Antwort auf den Beitrag von Navigation

Editiert von
Lok24
06.03.2019, 14:04

+1Re: EV3 Frage zur Pausierung von Programmschleifen

Permalink

1000steine-Code

BBCode

HTML


ja, ich such Dir das mal raus, kleinen Moment.......

huch, Frage falsch verstanden, das ist nicht so simpel.Hm.
Wenn das Programm in einer Schleife läuft und da z.B. einen Motor für 5 sec anmacht kommt es an der Abfrage des Sensors für 5sec nicht mehr vorbei.
Muss die Schleife also sofort unterbrochen werden, oder erst, wenn sie ihren Schleifenablauf komplett abgearbeitet hat?



Navigation gefällt das


Thomas52xxx
06.03.2019, 14:27

Als Antwort auf den Beitrag von Lok24

Re: EV3 Frage zur Pausierung von Programmschleifen

kann ich nicht die Abfrage "Schalter nicht geschlossen" als zusätzliche Bedingung vor das Starten der Schleife setzen.

Bzw. die Schleife in lauter Einzelschleifen zerlegen, die Ausgeführt werden, so lange der Schalter nicht gedrückt ist und der Schleifenzähler den gewünschten wert nicht erreicht hat.


Gruß
Thomas

mein Blog
meine Eisenbahnräder - mit funktionierendem Download


Lok24
06.03.2019, 14:33

Als Antwort auf den Beitrag von Thomas52xxx

Re: EV3 Frage zur Pausierung von Programmschleifen

Moin,

Thomas52xxx hat geschrieben:

kann ich nicht die Abfrage "Schalter nicht geschlossen" als zusätzliche Bedingung vor das Starten der Schleife setzen.

Bzw. die Schleife in lauter Einzelschleifen zerlegen, die Ausgeführt werden, so lange der Schalter nicht gedrückt ist und der Schleifenzähler den gewünschten wert nicht erreicht hat.


Es sind m.E. zwei Anwendungen:
Eine Maschine, die 10 sec lang die tollsten Sachen macht und dann wieder von vorne bedingt:
Die will ich zur Mittagspause stoppen, dann kann man das machen. Der Vorteil: die Anlage ist immer in einem definierten Zustand.

Oder ein Nothalt:
Dann bleibt alles mittendrin stehen.
Wird aber evtl schwierig, das wieder anlaufen zu lassen.



Lok24
06.03.2019, 14:44

Als Antwort auf den Beitrag von Thomas52xxx

Re: EV3 Frage zur Pausierung von Programmschleifen

Hier schon mal die einfachste Variante, das Hauptprogramm wird aber immer ganz durchlaufen, es stoppt also immer mit "grün", auch wenn der Sensor bei "gelb" gedrückt wird ....

[image]



Lok24
06.03.2019, 15:02

Als Antwort auf den Beitrag von Navigation

Editiert von
Lok24
06.03.2019, 15:06

Re: EV3 Frage zur Pausierung von Programmschleifen

Hallo,

so geht's: in der Variablen TEST wird gemerkt, ob der Taster gedrück ist oder nicht. Das Hauptprogramm läuft nur wenn nicht.

Es wird auch sofort unterbrochen, läuft aber beim Loslassen des Sensors immer von vorne neu.
Wichtig: die innere Schleife oben heißt LOOP und wird im unteren Programmast unterbrochen.

[image]




D.h. das macht nicht das Gewünschte, will man tatsächlich "pausieren" muss man jeden Befehl in eine solche Schleife einarbeiten, fürchte ich.
Übrigens kenne ich keine Programmiersprache, in der es sowas gibt. Glaube ich.

LG

Werner



Lok24
06.03.2019, 15:49

Als Antwort auf den Beitrag von Lok24

Re: EV3 Frage zur Pausierung von Programmschleifen

Ach ja *seufz* , es geht natürlich auch ohne die Hilfsvariable......

[image]



Micha2
06.03.2019, 16:27

Als Antwort auf den Beitrag von Navigation

Re: EV3 Frage zur Pausierung von Programmschleifen

Navigation hat geschrieben:

LLL,

gibt es beim EV3 mit Bordmitteln die Möglichkeit eine Programmschleife solange zu pausieren, wie der Berührungssensor gedrückt gehalten wird?

LG,
_Rene

Es wäre wichtig zu wissen, was genau "pausieren" bedeutet.
- Die Schleife wird sofort beim Drücken am aktuellen Ort unterbrochen und läuft von genau da wieder los, wenn losgelassen?
- Die Schleife stoppt an einem (oder mehreren) vorher definierten Stellen innerhalb der Schleife, falls gedrückt wird und läuft beim Loslassen von dort (oder vom Anfang) aus weiter?
- Die Schleife prüft nur vor oder nach jedem Schleifendurchlauf, ob der Sensor gedrückt ist oder nicht, und macht dann ggf. einen vollen Durchlauf oder nicht.



Lok24
06.03.2019, 16:44

Als Antwort auf den Beitrag von Micha2

Re: EV3 Frage zur Pausierung von Programmschleifen

Hallo,

Micha2 hat geschrieben:

Es wäre wichtig zu wissen, was genau "pausieren" bedeutet.
- Die Schleife wird sofort beim Drücken am aktuellen Ort unterbrochen und läuft von genau da wieder los, wenn losgelassen?


Das halte ich für kaum realisierbar.
Nimm an ein Motor läuft innerhalb der Schleife für 3 Sekunden.
Wie weiß Du, wie lange er schon gelaufen ist, wenn Stop gedrückt wird?
Du müsstest also dauernd für alle Zustände millisekundengenau die Werte merken und dann genau wieder aufsetzen und die Restlaufzeit berücksichtigen.

Das mag zwar gehen, wird aber extrem aufwendig.



Navigation
06.03.2019, 19:05

Als Antwort auf den Beitrag von Lok24

+1Re: EV3 Frage zur Pausierung von Programmschleifen

Vielen Dank schonmal für die Bemühungen.

Micha2 hat geschrieben:

Es wäre wichtig zu wissen, was genau "pausieren" bedeutet.
- Die Schleife wird sofort beim Drücken am aktuellen Ort unterbrochen und läuft von genau da wieder los, wenn losgelassen?


Im Idealfall ja

Lok24 hat geschrieben:
Hallo,
Das halte ich für kaum realisierbar.
Nimm an ein Motor läuft innerhalb der Schleife für 3 Sekunden.
Wie weiß Du, wie lange er schon gelaufen ist, wenn Stop gedrückt wird?


Ich weiß das nicht, aber im Jahr 2019 wird sich doch ein "intelligenter" Baustein das merken können ;)

Nach meinem unmaßgeblichen Verständnis müsste es doch machbar sein, ein Programm nicht nur zu jedem beliebigen Zeitpunkt zu stoppen (das funktioniert ja auch, wenn der Motor 2 von 3 geplanten Sekunden läuft), sondern auch an ebenjener Stelle weiterlaufen zu lassen. Was spricht denn (programm)technisch gesehen beim EV3 dagegen?

Ich kann mir auch gerade gar nicht vorstellen, dass eine Art Pause-Modus nicht vorgesehen ist und auch so wenig relevant sein soll

Liebe Grüße,
-Rene


Instagram | www.BRICK.art


gefällt das


Lok24
06.03.2019, 19:28

Als Antwort auf den Beitrag von Navigation

Editiert von
Lok24
06.03.2019, 19:36

Re: EV3 Frage zur Pausierung von Programmschleifen

Hallo,

Navigation hat geschrieben:

Ich weiß das nicht, aber im Jahr 2019 wird sich doch ein "intelligenter" Baustein das merken können ;)


Navigation hat geschrieben:
Nach meinem unmaßgeblichen Verständnis müsste es doch machbar sein, ein Programm nicht nur zu jedem beliebigen Zeitpunkt zu stoppen (das funktioniert ja auch, wenn der Motor 2 von 3 geplanten Sekunden läuft), sondern auch an ebenjener Stelle weiterlaufen zu lassen. Was spricht denn (programm)technisch gesehen beim EV3 dagegen?

Dass im "normalen" Programm der eine Befehl heißt: Laufe 5 sec.
Da sind keine 2 Befehle, zwischen denen Du einen Stop-Befehl einschieben kannst oder einen Einsprungpunkt, bei dem Du wieder aufsetzen kannst.

Was geht ist:
Eine Unterroutine für den Motor, die aus zwei Threads besteht, eine misst die Zeit rückwärts, die andere steuert den Motor. Wird das jetzt extern gestoppt bleibt es stehen. Wird es wieder aufgerufen und die Zeit ist noch nicht auf null wird die Restlaufzeit ausgeführt.

Oder Du zerlegst das Programm in winzigste Schritte, jeder Einzelne muss sich merken, ob er gerade erreicht wurde und über eine Verwzeigung übersprungen werden können, wenn Du "weiter" willst.

Navigation hat geschrieben:
Ich kann mir auch gerade gar nicht vorstellen, dass eine Art Pause-Modus nicht vorgesehen ist und auch so wenig relevant sein soll

An der IBM 370/125 mit 128k(!) Hauptspeicher auf der ich gelernt habe, konnte man den Prozessortakt stoppen und dann einzelne Bits im Hauptspeicher mit der Hand umschießen. Und "weiter" drücken.
Ist aus der Mode gekommen

Ich würde versuchen so etwas über leJOS oder EV3dev zu machen, denn da hast Du durch die Sprachen mit Threading etc. ganz andere Möglichkeiten.

Ich passe meinen Modelle meinen kargen Fähigkeiten an: Ich stoppe sie über den Brick, wenn ich sie starte gehen sie automatisch in Startposition (dass müssen sie ja eh nach dem Batteriewechsel). Das ist aber nicht das, was Dir vorschwebt.

Vielleicht hat ja hier noch jemand eine Lösung, würde mich freuen und auch interessieren. Aber wie gesagt, dass kenne ich auch von anderen Prozessoren und Sprachen nicht.

Grüße

Werner



6 nachfolgende Beiträge sind ausgeblendet

Alle anzeigen Immer alle anzeigen