Schleife mit Sensorauswertung starten und beenden
Moderator: Moderatoren
-
- Mindstormsfreund
- Beiträge: 3
- Registriert: 25. Dez 2016 13:37
Schleife mit Sensorauswertung starten und beenden
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?
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?
Re: Schleife mit Sensorauswertung starten und beenden
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
Hauptprogramm
Gruß Hobbes
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
-
- Mindstormsfreund
- Beiträge: 3
- Registriert: 25. Dez 2016 13:37
Re: Schleife mit Sensorauswertung starten und beenden
Wenn mir jemand sagen kann wie man ein Programm exportieren kann, kann ich dieses gerne hier anhängen.
Re: Schleife mit Sensorauswertung starten und beenden
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.
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.
-
- Mindstormsfreund
- Beiträge: 3
- Registriert: 25. Dez 2016 13:37
Re: Schleife mit Sensorauswertung starten und beenden
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.
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.
Re: Schleife mit Sensorauswertung starten und beenden
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.
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 9 Gäste