Zum Inhalt springen

LED Gehwegbeleuchtung Taster im Programm einbinden

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

  • Dieses Thema hat 2 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 7 Monaten, 1 Woche von Peter Merrot.
Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
  • 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 } }
    
    #7672 Antworten
    Stefan Hermann
    Administrator

    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

    #27117 Antworten
    Peter Merrot
    Gast
Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
Antwort auf: Antwort #7672 in LED Gehwegbeleuchtung Taster im Programm einbinden
Deine Information: