- HEMS Solar Speicher Tutorial         
Ergebnis 1 bis 5 von 5

Thema: Mit Knopf LED einschalten und mit Timer ausschalten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Vielen Dank für eure Antworten.
    Das heißt, ich frage vor der Anweisung die aktuelle Zeit ab, speicher sie in einer Variablen und ziehe diese nachher wieder von der aktuellen Zeit ab... Okay, hab's soweit

    Können in dem Programm 2 alle Delay Funktionen ebenfalls durch millis() ersetzt werden? Müsste ich dann mehrere Timer laufen lassen?!

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Können in dem Programm 2 alle Delay Funktionen ebenfalls durch millis() ersetzt werden? Müsste ich dann mehrere Timer laufen lassen?!
    Versuch mal so:
    Code:
    #define TIMER_AUS  -1
    #define TIMER_AN    0
    #define LED_PIN     9
    #define TASTER_PIN  8
    #define TICTIME    30 // 30 ms
    #define TICCOUNTMAX 100
    
    void setup() {
      pinMode(LED_PIN, OUTPUT);
      pinMode(TASTER_PIN, INPUT);
    }
    
    void loop() {
     timer();
     // tue was anderes
    }
    
    void timer() {
      static unsigned long tic = millis();
      static int ticcount = TIMER_AUS;  
      if(millis() - tic > TICTIME && ticcount >= TIMER_AN) // 30 ms vergangen und Timer gestartet?
      {
        tic = millis();                // nächsten 30ms Zyklus starten
        ticcount++;
        if (ticcount > TICCOUNTMAX) {  // Timer fertig?
          ticcount = TIMER_AUS;
          digitalWrite(LED_PIN, HIGH);
        }
        else
          blinkfunction(ticcount);    // Timer läuft noch -> blinkfunction() 
      }
      if(digitalRead(TASTER_PIN))     // Taste betätigt? Timer startet (neu)
        ticcount = TIMER_AN;
    }
    
    void blinkfunction(int ticcount)  // in 30 ms Zeitabständen aufgerufen
    {                                 // ticcount wird jeden Aufruf um 1 erhöht
      digitalWrite(LED_PIN, LOW);  
    }
    Die Funktion blinkfunction(int ticcount) kannst du jetzt so umbauen, wie du willst. Also in Abhängigkeit von ticcount die Led dimmen. Z.B.
    if(ticcount < 32) analogWrite(ticcount*8-1);...
    Geändert von Sisor (15.12.2014 um 22:17 Uhr)

Ähnliche Themen

  1. LED per PWM einschalten und dimmen PROBLEM
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 14.02.2014, 17:35
  2. Lichtschranke/Sensor zum ein- und ausschalten von LED-Stipes
    Von Timoletto im Forum Sensoren / Sensorik
    Antworten: 11
    Letzter Beitrag: 15.12.2012, 20:50
  3. Lampen mit RN-controll an- und ausschalten
    Von cricri im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 18.01.2011, 10:22
  4. Led mit Taster ein- und ausschalten
    Von Nullinger im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 30.01.2009, 14:00
  5. PWM mit Timer 0 und 2 geht, aber nicht mit Timer 1 (mega64)
    Von popi im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 14.06.2006, 17:00

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress