Projekte und Tutorials für Arduino › Foren › StartHardware-Forum › LED Gehwegbeleuchtung Taster im Programm einbinden
- Dieses Thema hat 0 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahren, 4 Monaten von Markus.
Ansicht von 1 Beitrag (von insgesamt 1)
-
AutorBeiträge
-
MarkusTeilnehmer
Hallo, leider bekomme ich es nicht hin, einen Taster in das Program so einzubinden das die LEDs erst bei Tastendruck anfaden 60sec. Ei geschaltet bleiben und danach ausgehen bis der Taster erneut gedrückt wird. Bitte um Hilfe.
int buttonPin = 8; int pausen = 500; int vals [] = { 0, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 10, 11, 13, 16, 19, 23, 27, 32, 38, 45, 54, 64, 76, 91, 108, 128, 152, 181, 215, 255 }; int vals1 [] = { 255, 215, 181, 152, 128, 108, 91, 76, 64, 54, 45, 38, 32, 27, 23, 19, 16, 13, 11, 10, 8, 7, 6, 5, 4, 3, 3, 2, 2, 2, 1, 0, }; int numVal = 32; //number of values in array byte schwelle = 10; // 70% * 255; Schwelle, bei der die nächste LED einsetzt. byte a,b,c,d,e,f; // Zählervariablen für 3 LEDs unsigned long sweepstart; // Zeit merken, zu der der Dimmprozess gestartet wurde. void setup() { for (int i = 2; i < 10; i++) { pinMode(i, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); // der Taster wird mit internem Pullup verwendet, d.h. er ist mit dem GND und dem digitalen Input verbunden } } void loop() { bool myCurrentButtonState = digitalRead(buttonPin); // Zählervariablen berechnen a = min(a++, numVal-1); // Zähler 1. LED wird hochgezählt bis 31 if (vals[a] > schwelle){ b = min(b++, numVal-1); // Zähler 2. LED wird hochgezählt bis 31, wenn Wert 1. LED > Schwelle, } if (vals[b] > schwelle){ c = min(c++, numVal-1); // Zähler 3. LED wird hochgezählt bis 31, wenn Wert 2. LED > Schwelle, } if (vals[c] > schwelle){ d = min(d++, numVal-1); // Zähler 4. LED wird hochgezählt bis 31, wenn Wert 2. LED > Schwelle, } if (vals[d] > schwelle){ e = min(e++, numVal-1); // Zähler 5. LED wird hochgezählt bis 31, wenn Wert 2. LED > Schwelle, } if (vals[e] > schwelle){ f = min(f++, numVal-1); // Zähler 6. LED wird hochgezählt bis 31, wenn Wert 2. LED > Schwelle, } analogWrite(3, vals[a]); analogWrite(5, vals[b]); analogWrite(6, vals[c]); analogWrite(9, vals[d]); analogWrite(10, vals[e]); analogWrite(11, vals[f]); delay(20); // Rücksetzen alle Variablen und wiederholen nach einer Pause if(millis()-sweepstart > pausen * 128){ // Ist die Wartezeit abgelaufen? (Dauer=pausen*128) a=0; // Zählervariablen rücksetzen b=0; c=0; d=0; e=0; f=0; sweepstart = millis(); // Zeitpunkt des Neustarts merken } }
-
AutorBeiträge
Ansicht von 1 Beitrag (von insgesamt 1)