Den Loop möchte ich gerne zeitlich begrenzen, also z.B. auf eine Dauer von 2 Minuten.
void loop() {
if (millis() > 2*60*1000L) return; // nach 2 Minuten nichts mehr machen.
...
}
reagiert dann nur noch auf Reset
Normalerweise nimmt man statt eines Absolutwerts millis() immer eine Differenz (millis ( ) - startzeit) und macht doch noch ein bisschen mehr als nichts, nach Ablauf der Zeit.
Ich habe mich anscheinend zu ungenau ausgedrückt. Sorry!
Daher möchte ich präziser beschreiben, was ich eigentlich möchte:
Ich möchte das Programm für das Wohnzimmer eines Hauses auf meiner Modellbahn nutzen und dabei den folgenden Ablauf simulieren:
Wenn das Wohnzimmer "betreten wird", soll die Wohnzimmer-Lampe (eine separate weiße LED) an gehen, 20 Sekunden später soll die im Sketch dargestellte TV-Simulation starten, diese soll für eine bestimmte Zeit laufen (die erwähnten 2 Minuten), dann TV-Simulation aus und 20 Sekunden später soll auch die weiße LED aus gehen (Wohnzimmer wird verlassen).
Es wäre super nett, wenn ihr mir Programmzeilen schreiben könntet. Sowas wie Endlicher Automat,
State Machine, Multitasking, Coroutinen, Ablaufsteuerung ... sagen mir überhaupt nichts!
@Tommy, ich habe mir so gedacht, ich würde anschließend in anderen Räumen die Lichter in unterschiedlichen Zeitabständen an und ausschalten lassen, um dann den von mir beschriebenen Ablauf im Wohnzimmer erneut zu starten.
weil Weihnachten ist lauffähig abgeändert.
Pins und Zeiten kannste selbst für dich korrigieren.
Das Einzigste was blockiert ist die for Schleife in der simulation_TV() aber das stört hier nicht.
Dadurch läuft die TV Simu noch einmal komplett durch wenn die TV EIN-Zeit vorher knapp "verpasst" wurde.
Sollte hier auch egal sein. Die Dauer eines TV Simulationsdurchlaufes kannste ausrechnen.
Guten Morgen Doc-Arduino,
vielen, vielen Dank für den Sketch. Läuft super. Spiele jetzt mit den Zeiten rum.
Demnächst versuche ich weitere LEDs mit unterschiedlichen Ein- und Aus-Zeiten zu implementieren.
Werde mich sicherlich noch mal melden
Vielen Dank auch an alle anderen.
Wünsche noch einen angenehmen 2. Weihnachtstag.
genau spiele rum, lerne zu verstehen was im Sketch alles wie passiert. Am Bestern wäre wenn du den Sketch irgendwann komplett lesen kannst. Dann haste viel gewonnen.
Kleine Idee: Verändere doch den Sketch so, dass das Flackern nicht immer gleich ist, sondern zufällig generiert. 1. ist es dann etwas realistischer, da ja nicht immer das gleiche Programm im Fernsehen läuft und 2. musst du dann nicht dieses KByte oder wie viel das ist für das Speichern der Werte im Array draufgehen lassen.
wir machen noch eine kleine Schönheitsänderung.
Das RGB ausschalten am Ende der simulation_TV Funktion nehmen wir raus.
Das schreiben wir in den case Zweig TV_Simu rein. Das 3x digitalWrite meine ich.
Das bewirkt das Endgültige aus erst beim Zustandswechsel zur nächsten Pause. Damit kannste nahtlos wiederholende Lichteffekte erstellen ohne das nach Durchlaufende der TV zwangsweise kurz ausgeht.
@rothe_jakob
Lies Dir die 17 Posts über Dir durch, dann sollte ungefähr die Lösung, Die für pussy123 ersonnen wurde, auch Deine sein.
Solltre sich Dein Problem von Diesem hier unterscheiden, eröffne bitte einen eigenen Thread mit aussagekräftigem Titel und gib und sämtliche Informationen über Deinen Sketch nebst Hardware, Die wir zur Lösung brauchen werden.
Hallo, ich habe eine RGB LED an den arduino angeschlossen. diese soll nun ebenfalls einen fernseher simulieren.Allerdings kenne ich keinen der Befehle von pussy123´s Programmtext. Es wäre nett, wenn mir die jemand grob erklären würde.
Außerdem würde ich gerne wissen ob es möglich ist, das blinken zuffälig zu generieren.
Allerdings kenne ich keinen der Befehle von pussy123´s Programmtext.
Einen Teil findest du in der Arduino Referenz. Einen Teil in dem dicken C++ Buch, welches du dir anschaffen solltest.
Und den letzten Teil in der AVR-LibC Dokumentation
Das können wir dir hier nicht alles vorlesen!
Außerdem würde ich gerne wissen ob es möglich ist, das blinken zuffälig zu generieren.
Ja!
Auch den Zufallsgenerator findest du in der genannten Doku