Schleife mit Sensorauswertung starten und beenden

grafische Programmiersprachen für den EV3/NXT.
NXT-G, Robolab, LabView und was noch so schön bunt ist...

Moderator: Moderatoren

leon-le-profi
Mindstormsfreund
Mindstormsfreund
Beiträge: 3
Registriert: 25. Dez 2016 13:37

Schleife mit Sensorauswertung starten und beenden

Beitragvon leon-le-profi » 29. Dez 2016 16:29

Hallo,

leider hat eine erste Suche im Forum keine Lösung gebracht, deshalb hiermit mein erster Post.

Ich habe ein Programm geschrieben das darauf wartet das der Sensorwert des Geräuschsensors einen Schwellwert erreicht.
D.h. ich klatsche einmal laut.
Diese Abfrage des Sensorwertes befindet sich in eine Schleife.
Tritt das Ereignis ein, wird eine weitere Schleife innerhalb der ersten Schleife ausgeführt.
Der Roboter fährt innerhalb dieser herum.

Diese 2. Schleife wird so lange ausgeführt bis sie beendet wird.
Dies erreiche ich mit einer vom bisher beschriebenen Block externen 3. Schleife die als erstes ein Warten enthält.
Erreicht der Sensorwert des Geräuschsensors auch hier einen Schwellwert (wieder ein Klatschen) wird ein Schleifeninterrupt der oben genannten 2. Schleife ausgeführt und der Roboter müsste wieder in Schleife 1 auf ein erneutes Klatschen warten.

Wenn ich in der externen Schleife nicht auf den Sensorwert prüfe sondern eine Zeit ablaufen lasse klappt das super.
Klatschen, Programm wird ausgeführt, x Sekunden später stoppt die Schleife, klatschen, Programm wird ausgeführt...

Wenn ich dort aber den Schwellwert (Klatschen) auswerte dann geht gar nichts.

Ich denke schon selber die Erklärung zu haben, jedoch fehlt es mir an einer Lösungsidee.
Der Schwellwert wird durch das Klatschen zur gleichen Zeit für Start und Stop erreicht, also passiert augenscheinlich gar nichts.

Ich habe aber keine Idee wie man das lösen könnte.
Alle Ideen mit unterschiedlichen Schellwerten, Doppelklatschen, weiteren Warteblöcken usw. schlugen bisher fehl.

Wer hat eine Lösungsidee?

Hobbes
Schreibt viel
Schreibt viel
Beiträge: 75
Registriert: 31. Jan 2014 11:21

Re: Schleife mit Sensorauswertung starten und beenden

Beitragvon Hobbes » 30. Dez 2016 10:52

Hallo,

vielleicht kannst du mal ein Ablaufdiagram oder einen Pseudocode posten.
So ganz verstehe ich nämlich nicht, was du da machst.

Ich würde wahrscheinlich zwei Programme (Prozesse) benutzen.
In dem einen nur den Sensorwert abfragen und Variablen setzten. Im Hauptprogramm dann nur auf die Variablen reagieren.

Beispiel

Code: Alles auswählen

Sensorprogramm
Do
  if SensorKlatschen then
      anzahlklatschen++
      if newMessage== false then newMessage= True
  endif


Hauptprogramm

Code: Alles auswählen

Do
   if newMessage== True
        if anzahlklatschen==1. then
             "Motor starten"
               newMessage=false
        if anzahlklatschen== 2 then
             Motor stop
              newMessage=false
              anzahlklatschen=0   
        if anzahlklatschen>2
              was auch immer   


Gruß Hobbes

leon-le-profi
Mindstormsfreund
Mindstormsfreund
Beiträge: 3
Registriert: 25. Dez 2016 13:37

Re: Schleife mit Sensorauswertung starten und beenden

Beitragvon leon-le-profi » 30. Dez 2016 13:30

ausweichen3.JPG
Ich arbeite nur mit dem grafischen Editor, für Code bin ich noch zu unerfahren.
Wenn mir jemand sagen kann wie man ein Programm exportieren kann, kann ich dieses gerne hier anhängen.

Hobbes
Schreibt viel
Schreibt viel
Beiträge: 75
Registriert: 31. Jan 2014 11:21

Re: Schleife mit Sensorauswertung starten und beenden

Beitragvon Hobbes » 30. Dez 2016 14:48

Ich weiß nicht, ob du eine Schleife auch von außen beenden kannst oder nur von innen. Das würde ich erstmal ausprobieren.

Du kannst auch in deiner Abbruchschleife(Unterprogramm) eine Variable setzten und diese dann in deinem Hauptprogramm abfragen. So kannst du die Schleife von innen beenden.

leon-le-profi
Mindstormsfreund
Mindstormsfreund
Beiträge: 3
Registriert: 25. Dez 2016 13:37

Re: Schleife mit Sensorauswertung starten und beenden

Beitragvon leon-le-profi » 30. Dez 2016 21:22

Das beenden von außen funktioniert bereits.

Jedoch leider nur wie beschrieben wenn ich z.B. einen Timer verwende.
Oder es ging auch wenn ich z.B. das drücken des Berührungssensors abfrage.

Aber es geht nicht wenn ich den gleichen Sensor verwende der die Schleife auch startet.
Irgendwie logisch, aber ich hoffe es gibt trotzdem eine Lösung.

Hobbes
Schreibt viel
Schreibt viel
Beiträge: 75
Registriert: 31. Jan 2014 11:21

Re: Schleife mit Sensorauswertung starten und beenden

Beitragvon Hobbes » 31. Dez 2016 09:17

Probiere doch mal aus ob eine Pause vor der inneren Schleife hilft.

So wie es jetzt ist, kann es natürlich sein das deine innere Schleife startet und sofort wieder beendet wird.


Zurück zu „grafische Programmiersoftware“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 26 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss