Anzeige

LED Gehwegbeleuchtung Taster im Programm einbinden

Projekte und Tutorials für Arduino Foren StartHardware-Forum LED Gehwegbeleuchtung Taster im Programm einbinden

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beiträge
  • #7556 Antworten
    Markus
    Teilnehmer

    Hallo, ich möchte gern in diesem Program einen Taster einfügen der beim drücken den Andimmvorgang auslöst 60 Sec. an bleibt und danach wieder durch erneutes drücken von vorne beginnt. Ich bekomme es einfach nicht hin den Taster einzubinden das es funktioniert. Es müsste doch das Program übersprungen werden solange bis der Taster gedrückt wird oder?

    
    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 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 } }
    
    • Dieses Thema wurde geändert vor 3 Monaten, 1 Woche von Markus. Grund: Ergänzung
    • Dieses Thema wurde geändert vor 2 Monaten, 1 Woche von Stefan Hermann.
    #7672 Antworten
    Stefan Hermann
    Verwalter

    Hallo Markus,

    also wenn ich es richtig sehe, liest du zwar myCurrentButtonState ein, benutzt es aber nicht mehr, oder? Ich glaube, ich würde für so ein Programm eine State-Machine einsetzen. Ich hab das mal hier beschrieben: https://starthardware.org/tee-timer-mit-arduino/ Hoffentlich hilft dir das weiter.

    Liebe Grüße

    Stefan

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
Antwort auf: LED Gehwegbeleuchtung Taster im Programm einbinden
Deine Information: