Projekte und Tutorials für Arduino › Foren › StartHardware-Forum › Wohnhausbeleuchtung
Schlagwörter: Wohnhausbeleuchtung
- Dieses Thema hat 3 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 1 Monat von TrevoRt.
Ansicht von 4 Beiträgen - 1 bis 4 (von insgesamt 4)
-
AutorBeiträge
-
Schulze969Teilnehmer
Wie kann man in der Wohnhausbeleuchtung https://starthardware.org/wohnhausbeleuchtung-fuer-die-modellbahn/ einen Taster einfügen, damit der Loop nur losläuft wenn der Taster LOW ist?
Uwe Forkel
Stefan HermannVerwalterHi Uwe,
klar, das geht. Ich hab den Code mal für einen Button angepasst. Der Button ist an Pin 2 und am GND angeschlossen. Ich hoffe, das klappt so für dich:
int ledPins[] = {3, 4, 5, 6, 7}; // Pins für die Zimmerbeleuchtung, 0 = Schlafzimmer, 1 = Küche, 2 = Esszimmer, 3 = Badezimmer, 4 = Hausnummer int anzahlLedPins = 5; // Anzahl der Einträge im Array ledPins int tvPins[] = {11, 10, 9}; // Pins für den TV Rot, Grün, Blau int buttonPin = 2; // Pin für einen Taster int myState = 0; // Speichert den aktuellen Zustand der Animation long stateDauer[] = {50000, 20000, 30000, 10000, 10000, 30000, 10000}; // Wie lange dauert der jeweilige Zustand int stateAnzahl = 7; // 0 = Tag, 1 = Abendessen, 2 = TV Show, 3 = Zähneputzen, 4 = Kuschelzeit, 5 = Schlafen, 6 = Aufstehen long currentStateTimer = 0; // Timer für den aktuellen Zustand void setup() { randomSeed(analogRead(0)); // Start des Zufallszahlen-Generators for (int i = 1; i < anzahlLedPins; i++) { // erst ab 1, da der erste Pin (Pin 3) als analoger Output verwendet wird pinMode(ledPins[i], OUTPUT); // deklariere Pins 4 – 7 als digitale Outputs } pinMode(buttonPin, INPUT_PULLUP); // Button mit internem Pullup wird konfiguriert } void loop() { if (currentStateTimer + stateDauer[myState] < millis()) { currentStateTimer = millis(); // resetted den Timer myState++; // erhöht den aktuellen State if (myState >= stateAnzahl) myState = 0; // falls myState größer als verfügbare States, dann myState=0; } switch (myState) { // Haupt-Statemachine case 0: // State: Tag digitalWrite(ledPins[1], LOW); // Küche aus digitalWrite(ledPins[2], LOW); // Esszimmer aus digitalWrite(ledPins[3], LOW); // Badezimmer aus digitalWrite(ledPins[4], LOW); // Hausnummer aus analogWrite(tvPins[0], 0); // TV aus als Wohnzimmerbeleuchtung analogWrite(tvPins[1], 0); // TV aus als Wohnzimmerbeleuchtung analogWrite(tvPins[2], 0); // TV aus als Wohnzimmerbeleuchtung currentStateTimer = millis(); // resettet den Timer kontinuierlich if (digitalRead(buttonPin)==LOW){ // wenn Taster gedrückt wird myState++; // wird der State um 1 erhöht } break; case 1: // State: Abendessen digitalWrite(ledPins[4], HIGH); // Hausnummer an digitalWrite(ledPins[1], HIGH); // Küche an digitalWrite(ledPins[2], HIGH); // Esszimmer an break; case 2: // State: TV Show digitalWrite(ledPins[2], LOW); // Esszimmer aus if (random(400)==1) { // Licht in Küche ausschalten digitalWrite(ledPins[1], LOW); // Küche aus } if (random(500)==1) { // Licht in Küche einschalten digitalWrite(ledPins[1], HIGH); // Küche an } if (random(10)==1) analogWrite(tvPins[0], random(100,200)); // TV rot if (random(10)==1) analogWrite(tvPins[1], random(100,200)); // TV grün > für mehr Fussball einfach die Werte ändern ;-) if (random(10)==1) analogWrite(tvPins[2], random(100,200)); // TV blau break; case 3: // State: Zähneputzen digitalWrite(ledPins[1], LOW); // Küche aus digitalWrite(ledPins[2], LOW); // Esszimmer aus analogWrite(tvPins[0], 0); // TV aus analogWrite(tvPins[1], 0); // TV aus analogWrite(tvPins[2], 0); // TV aus digitalWrite(ledPins[3], HIGH); // Badezimmer an break; case 4: // State: Kuschelzeit? digitalWrite(ledPins[3], LOW); // Badezimmer aus if (random(10)==1) analogWrite(ledPins[0], random(100,200)); // Schlafzimmer break; case 5: // State: Schlafen analogWrite(ledPins[0], 0); // Schlafzimmer aus break; case 6: // State: Aufstehen digitalWrite(ledPins[1], HIGH); // Küche an digitalWrite(ledPins[2], HIGH); // Esszimmer an digitalWrite(ledPins[3], HIGH); // Badezimmer an analogWrite(tvPins[0], 255); // TV an als Wohnzimmerbeleuchtung analogWrite(tvPins[1], 255); // TV an als Wohnzimmerbeleuchtung analogWrite(tvPins[2], 255); // TV an als Wohnzimmerbeleuchtung break; } delay(20); // kurze Pause }
Liebe Grüße und ich würde mich über Fotos freuen: hallo@starthardware.org
Stefan
TrevoRtGast[url=https://translate.google.com/]ssssssss[/url]
TrevoRtGast -
AutorBeiträge
Ansicht von 4 Beiträgen - 1 bis 4 (von insgesamt 4)