Input während eines aktiven Loops

Kann man das über count regeln und wenn ja, könntet ihr mir vllt. eine kleine Starthilfe anbieten?

Ich sehe da kein count

Nein, das war ja meine Frage, ob man die Animation unterbrechen kann, sobald der Arduino den Text erhält und ob das mit count funktioniert.

combie:
-> Wenn man einen bestimmten Ablauf wünscht, muss man sich eine Ablaufsteuerung bauen.

Hier, zum Beispiel:
Weg mit den ganzen Delays und auf endliche Automaten umrüsten.

Das gilt weiterhin und auch für Deine Animation.

Du musst das delay(500) aus der Animation loswerden. Dann kannst Du jederzeit das Ende (ausgelöst durch welches Ereignis auch immer) feststellen und dementsprechend handeln.

Liegt das wirklich rein am delay?
Also wird die Schleife nicht trotzdem einmal bis zum Ende durchgeführt, selbst wenn ich etwas anderes als delay verwende?
Weil der delay sorgt ja aktuell nur dafür, dass die LEDs halt mit einer halben Sekunde Verzögerung leuchten.

Liegt das wirklich rein am delay?

Das macht deine Schleife langsam.

Also wird die Schleife nicht trotzdem einmal bis zum Ende durchgeführt, selbst wenn ich etwas anderes als delay verwende?

Ja.

Mein Rat:
Lerne in Nebenläufigkeiten zu denken.

Im Moment arbeitest du mit einem Monotasking System, und denkst Mono.
Du möchtest aber eine Art Multitasking, und dann auch noch eine Kommunikation zwischen den Tasks.

Das erfordert eine Umstellung des Programms, welche nur möglich ist, wenn du dein Denken umstellst.

Ablaufsteuerung
Meine Standardantwort zu Ablaufsteuerungen:

Eine Stichworte Sammlung für Google Suchen:
Endlicher Automat,
ProtoThreads,
State Machine,
Multitasking,
Coroutinen,
Ablaufsteuerung,
Schrittkette,
BlinkWithoutDelay,

Automat (Informatik)
Blink Without Delay
Die Nachtwächter Erklärung

MicroBahner/MobaTools
Intervall Macro
Multitasking Macros
INTERVAL Ersatzstoff
CooperativeTask

Alles klar, danke für die Antwort :slight_smile:

Ja ich bin noch ein Frischling in dem Bereich,
aber danke für die Tipps!

tcchaise:
Alles klar, danke für die Antwort :slight_smile:

Ja ich bin noch ein Frischling in dem Bereich,
aber danke für die Tipps!

Und was genau heißt das ?

Du kannst nicht lernen ?
Du darfst nicht lernen ?
Du willst nicht lernen ?

Nein?

Ich wollte lediglich damit ausdrücken, dass ich in dem Bereich eben nicht so versiert bin und teilweise eben auch nicht weiß, wonach ich genau suchen muss.
Daher bin ich über jegliche Art von Hilfe dankbar

Ja ich bin noch ein Frischling in dem Bereich,

Ja, das sehen wir.
Auch ohne, dass du das sagst.

Wir können es aber leider nicht ändern.
Du allerdings schon.
Wird etwas dauern, aber es besteht Hoffnung.
(bist schließlich nicht der/die erste mit solchen Problemen)

Verstehe ehrlich gesagt nicht, weshalb man jetzt ausfallend werden muss.
Man ist nicht gezwungen auf diese Posts zu antworten und derartige Antworten wie die letzten beiden, sind einfach nicht nötig.

Punkt 1:
Da ist nichts ausfallendes dran.

Punkt 2:
Du hast keinerlei Recht oder Macht die Antworten, welche du bekommst zu bestimmen.

Auch wenn du nicht fragst, warum du solche Antworten bekommst, kann ich es dir trotzdem sagen!

Ich(Wir?) haben viele viele bedenklich Erfahrungen gemacht, mit Leuten, die sich selber als Anfänger, oder vergleichbar, benennen.

Aus meiner Sicht ist das nicht nötig!

Ich erkenne Anfänger an ihrem Tun.
Wer mir dann sagt, dass er ein Anfänger ist, scheint mich irgendwie für blöd zu halten.
Ich gebe zu, das schmeckt mir nicht.

Was aber viel schlimmer ist:
Wer sich selber als Anfänger bezeichnet, festigt den Zustand durch Selbstsuggestion. Je öfter das wiederholt wird, desto mehr festigt sich das.
Das halte ich für den gänzlich falschen Weg.

Mein Rat an dich, sage und denke:
Das werde ich lernen.
Da lese ich mich ein!

Das ist die richtige mentale Einstellung, welche man festigen sollte. Da schaden auch die Wiederholungen nicht.

Okay, dann scheint es auf beiden Seiten ein Missverständniss gegeben zu haben.

Ich möchte keinem das Gefühl geben, dass ich ihn für dumm verkaufe.
Das war lediglich als Hinweis gedachte, damit die Lösungsvorschläge etwas "anfängerfreundlich" dargestellt werden.
Ich habe diesbezüglich auch schon Erfahrungen gesammelt, dass die Lösungsvorschläge für mein Problem dann doch komplexer waren, als das eigentliche Problem.
Das war dann eher kontraproduktiv, daher dachte ich, dass ich vorher einen kurzen Hinweis gebe.

Zurück um Problem ?

for(uint16_t i=0; i<strip.numPixels(); i++) {   

...
  delay(500);
}

Wenn du mit einer halben Sekunde Verzögerung leben kannst, ist dein Problem natürlich nicht das delay sondern die for Schleife. Wenn alles wirklich sofort "nebenläufig" wirken soll, musst du auch das delay durch eine "WithoutDelay" - Konstruktion ersetzen.

Im ersten Fall könntest du innerhalb der for-Schleife abfragen ob es weitergehen soll. Solche Schleifen kann man vorzeitig mit break; abbrechen oder die Weitermach-Bedingung i<strip.numPixels() erweitern.
Einfacher (mein Geschmack) ist es, diese for-Schleife ganz zu streichen und loop selbst (wie sein Name schon sagt) als die einzige Schleife anzusehen. Das führt dann zu einer Konstruktion, die hier gern "endlicher Automat" genannt wird. Das aktuell zu ändernde Pixel ist einer der Zustände.

Einfacher auch deshalb, weil diese Konstruktion auch für die andere Änderung "WithoutDelay" erforderlich ist. Die hat das Ziel, dass loop() überhaupt keine Zeit braucht, und stattdessen die Zeit seit dem letzten Pixelwechsel ein weiterer Zustand deiner State Machine ist.

Wenn loop() keine Zeit braucht, kannst du jederzeit alles mögliche gleichzeitig machen.

Ist halt ein komplett anderer Programmier-Ansatz, der sicher gewöhnungsbedürftig ist.

tcchaise:
Ja, dort verbinde ich mich per USB-Tethering mit meinem Handy (Leider sehr umständlich)
Am Laptop direkt verwenden wir allerdings Cisco AnyConnect, wodurch wir automatisch mit dem Firmennetz verbunden werden.

Du bist dir schon bewusst, dass du das Sicherheitskonzept deiner Firma umgehst? Die Folgen können enorm sein, und du haftest dafür. Das ist keine grobe Fahrlässigkeit mehr, das ist schon Vorsatz.

michael_x:
Wenn du mit einer halben Sekunde Verzögerung leben kannst, ist dein Problem natürlich nicht das delay sondern die for Schleife. Wenn alles wirklich sofort "nebenläufig" wirken soll, musst du auch das delay durch eine "WithoutDelay" - Konstruktion ersetzen.

Genau deshalb habe ich ja nachgefragt gehabt, weil ich den Delay bewusst ausgetestet und letztendlich so eingestellt habe. Und für das spätere Ziel wäre eine halbe Sekunde jetzt kein Drama gewesen. Es geht ja nur darum, dass ich am Ende verschiedene Status von Installationsvorgängen visuell darstellen kann.
Danke schonmal für die ausführliche Beschreibung, werde mich die Tage mal in die Themen einlesen :slight_smile:

ElEspanol:
Du bist dir schon bewusst, dass du das Sicherheitskonzept deiner Firma umgehst? Die Folgen können enorm sein, und du haftest dafür. Das ist keine grobe Fahrlässigkeit mehr, das ist schon Vorsatz.

Wer sagt denn, dass ich das nicht ohne Einverständnis mache?
Direkt solche Anschuldigungen, ohne überhaupt irgendwelche genaueren Informationen darüber zu haben

Und, hast du das Einverständnis der IT? Und wenn ja, wieso lassen sie es dich nicht sauber installieren ?

ElEspanol:
Und, hast du das Einverständnis der IT? Und wenn ja, wieso lassen sie es dich nicht sauber installieren ?

Das hat dich überhaupt nicht zu interessieren und ist auch nicht das Gesprächsthema dieses Posts

Mit derartigen Antworten erhöhst Du die Hilfsbereitschaft sicher sehr stark :wink:

Gruß Tommy

tcchaise:
Das hat dich überhaupt nicht zu interessieren und ist auch nicht das Gesprächsthema dieses Posts

Uuii, was ist das denn für ein Ton ?

Tommy56:
Mit derartigen Antworten erhöhst Du die Hilfsbereitschaft sicher sehr stark :wink:

Was in meinem Arbeitsumfeld abläuft hat ihn nicht zu interessieren und wenn er mir Vorwürfe an den Kopf wirft, ohne jegliche Informationen zu haben, dann ist das einfach lästig und hat überhaupt nichts mit "Hilfsbereitschaft" zu tun.

HotSystems:
Uuii, was ist das denn für ein Ton ?

Kommt drauf an, in welchem Ton man die Nachricht auffasst, Betonungen können einen entscheidenen Unterschied machen.
Wieso/Weshalb/Warum ich in einer VM arbeite ist nun mal nicht das Thema dieses Posts und natürlich kann ich die Antworten nicht beschränken, aber wenn man mir gegenüber unhöflich wird, dann antworte ich auch darauf.