INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Leds dimmen ohne delay
18.04.2018, 21:00
Beitrag #9
RE: Leds dimmen ohne delay
danke dir aber sorry ich versteh das einfach nicht. der macht alles nur nicht das was ich will. es schaltet das fading dann langsamer und und. er soll ja nur 2 sekunden warten den ersten led anschalten. und zwischen drin 3 sekunden warten und dann die led 2 einschalten glaub einfach das programmieren ist nicht mein fall
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.04.2018, 02:04 (Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2018 02:10 von Corvus.)
Beitrag #10
RE: Leds dimmen ohne delay
eventuell ist dieser Ansatz für dich besser bearbeitbar:
Code:
struct fadableLed {
  int pin;
  boolean fadingActive;
  unsigned int duration;
  unsigned long startMillis;
  int startBrightness;
  int endBrightness;
};

fadableLed led1 = {9,false,0,0,0,0};
fadableLed led2 = {10,false,0,0,0,0};

void setup() {
  pinMode(led1.pin, OUTPUT);
  pinMode(led2.pin, OUTPUT);
}

void loop() {
fadeLed(led1,1000,255);
Delay(1000);
fadeLed(led2,4000,255);
Delay(2000);
fadeLed(led1,1000,0);
Delay(1500);
fadeLed(led1,200,128);
Delay(200);
fadeLed(led1,1000,0);
Delay(3000);
fadeLed(led2,200,0);
Delay(1000);
}


void fadeLed(fadableLed &led,unsigned int duration, int brightness) {
  led.fadingActive=true;
  led.endBrightness=brightness;
  led.duration=duration;
  led.startMillis=millis();
}

void fadeLedDeamon(fadableLed &led) {
  if (led.fadingActive) {
    unsigned long currentMillis = millis();
    if (currentMillis-led.startMillis >= led.duration) {
      led.startBrightness=led.endBrightness;
      analogWrite(led.pin, led.endBrightness);
      led.fadingActive= false;
    } else {
      analogWrite(led.pin, map(currentMillis-led.startMillis,0,led.duration,led.startBrightness,led.endBrightness));
    }
  }
}

void Delay(unsigned int ms) {
  unsigned long startMillis = millis();
  do {
    fadeLedDeamon(led1);
    fadeLedDeamon(led2);
  } while (millis()-startMillis<ms);
}
wieder ungetestet...
fadeLed() startet einen Fadevorgang, welcher dann von Delay() während der Wartezeiten bearbeitet wird.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  delay Zeit falsch golex 9 339 Gestern 21:18
Letzter Beitrag: GuaAck
  For-Schleife ohne Begrenzung? Batucada 4 220 26.04.2019 09:54
Letzter Beitrag: Batucada
  [Vorstellung] Serieller Sender ohne 2. MC Tommy56 2 229 13.04.2019 22:03
Letzter Beitrag: Tommy56
  2 PWM-Signale ohne Überschneidung mephistopheles 8 569 27.03.2019 09:45
Letzter Beitrag: mephistopheles
Sad Neuling verzweifelt braucht Hilfe delay durch timer ersetzen Lois 1 598 06.02.2019 16:15
Letzter Beitrag: Tommy56
  mehrere leds blinken jennerlein 1 427 18.12.2018 09:25
Letzter Beitrag: hotsystems
  GShield v5B / Arduino Due / Verwendung ohne G-Code bytecook 0 355 26.08.2018 11:33
Letzter Beitrag: bytecook
  Doppelte Abfrage der Bedingung mit Wartezeit ohne Delay soluman 3 1.046 05.07.2018 20:53
Letzter Beitrag: GuaAck
  Bilder bzw. Informationen von RGB LEDs speichern AC_DC_new 7 1.177 07.06.2018 15:01
Letzter Beitrag: Tommy56
  WS2812b LEDs Wellenlänge wiedergeben lassen avoid 3 967 04.05.2018 21:56
Letzter Beitrag: avoid

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste