Go Down

Topic: Flachernde LEDs mit timer  (Read 342 times) previous topic - next topic

Daniellos

Danke,

der Code läuft.

Quote
const byte ledPin[] = {3, 5, 9, 11}; // LED Ausgang bestimmen
const byte ledAnz = sizeof(ledPin);
unsigned long zeit;
unsigned int val = 0; // variable LED Helligkeit
unsigned int delayval = 0; // variable LED Wartezeit

void setup() {
  randomSeed(A0); // Zufallszahlengenerator
  for (byte j = 0; j < ledAnz; j++) {
    pinMode(ledPin[j], OUTPUT); // LED als Ausgang setzen
  }
}

void loop() {
  if (zeit < 20000) {
    for (byte j = 0; j < ledAnz; j++) {
      val = random(0, 255); //  0 = LED aus, 255 = LED maximale Helligkeit.
      analogWrite(ledPin[j], val); // Setzt das PWM Signal auf die Zufallszahl
    }
    delayval = random(150, 450); // 30 = schnell, 600 = langsam.
    delay(delayval); // Setze die Wartezeit auf die Zufallszahl
    zeit += delayval;
  } else {
    zeit = 0;
    for (byte j = 0; j < ledAnz; j++) {
      digitalWrite(ledPin[j], LOW);
    }delay(10000);
    {for (byte j = 0; j < ledAnz; j++)
    digitalWrite(ledPin[j], HIGH);
    delay(10000);
    }
  }
}
:)  :)  :)  :)

agmue

Code: [Select]
randomSeed(A0);
 ist sinnfrei, habe ich aber anfänglich auch übersehen. Bitte verwende stattdessen
Code: [Select]
randomSeed(analogRead(A0));
 um dem Zufallsgenerator, der den Zufall nur berechnet, einen zufälligen Anfangswert vom "wackelnden" Eingang zu geben.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

HotSystems

Und verwende bitte zukünftig Code-Tags anstatt Quote-Tags, erst durch die richtigen Tags wird der Sketch auch sauber lesbar.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Daniellos

Jetzt habe ich die LEDs angeschlossen und beim flackern die Dimmung mir mal angeschaut.  Hätte gerne mehr Dimmung.  Es gibt bisher nur leichte Wechsel zwischen aus und ca. 80 bis 100 Prozent. Andere Werte zwischen 1 und 80 Prozent licht ist gleich LED aus.
Würde mal mehr vielleicht über analogWrite erreichen?

Oder lassen sich 5mm LEDs nicht so richtig dimmen mit dem arduino?

Das flackern soll halt realistisch aussehen als wären es kaputte Lampen.

Danke
Daniel

agmue

Würde mal mehr vielleicht über analogWrite erreichen?
Was ist dann das?
Code: [Select]
analogWrite(ledPin[j], val); // Setzt das PWM Signal auf die Zufallszahl

Oder lassen sich 5mm LEDs nicht so richtig dimmen mit dem arduino?
Das liegt eher an der nicht linearen Sehkurve unseres Auges.

Das flackern soll halt realistisch aussehen als wären es kaputte Lampen.
Was denn für Lampen?
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Daniellos

#20
Jun 12, 2019, 03:55 pm Last Edit: Jun 12, 2019, 04:10 pm by Daniellos
Jetzt funktioniert es.
War mein fehler.
Habe das mit dem hinweis:

Quote
Code: [Select]

randomSeed(A0);


 ist sinnfrei, habe ich aber anfänglich auch übersehen. Bitte verwende stattdessen
Code: [Select]

randomSeed(analogRead(A0));


 um dem Zufallsgenerator, der den Zufall nur berechnet, einen zufälligen Anfangswert vom "wackelnden" Eingang zu geben.
geändert.
Davor war das Flackern nicht richtig deutlich zu erkennen.

Code: [Select]
const byte ledPin[] = {3, 5, 6, 9, 10, 11}; // LED Ausgang bestimmen
const byte ledAnz = sizeof(ledPin);
unsigned long zeit;
unsigned int val = 0; // variable LED Helligkeit
unsigned int delayval = 0; // variable LED Wartezeit

void setup() {
  randomSeed(analogRead(A0)); // Zufallszahlengenerator
  for (byte j = 0; j < ledAnz; j++) {
    pinMode(ledPin[j], OUTPUT); // LED als Ausgang setzen
  }
}

void loop() {
  if (zeit < 20000) {
    for (byte j = 0; j < ledAnz; j++) {
      val = random(1, 255); //  0 = LED aus, 255 = LED maximale Helligkeit.
      analogWrite(ledPin[j], val); // Setzt das PWM Signal auf die Zufallszahl
    }
    delayval = random(50, 400); // 30 = schnell, 600 = langsam.
    delay(delayval); // Setze die Wartezeit auf die Zufallszahl
    zeit += delayval;
  } else {
    zeit = 0;
   
    for (byte j = 0; j < ledAnz; j++)
    {digitalWrite(ledPin[j], HIGH); 
    }delay(180);                         //kurzes aufblitzen

    {for (byte j = 0; j < ledAnz; j++)
    digitalWrite(ledPin[j], LOW);
    delay(10000);}                      //Aus-Zeit
   
    {for (byte j = 0; j < ledAnz; j++)
    digitalWrite(ledPin[j], HIGH);
    delay(10000);}                      //An-Zeit
   
    {for (byte j = 0; j < ledAnz; j++)
    digitalWrite(ledPin[j], LOW);
    delay(80);}                        //kurzes aus
  }
}


Jetzt funktioniert es.

Soll ein effeckt in einer LED schrifft werden. Womit die Buchstaben dann einen anderen Sinn ergeben.
LEDs und Tennisball darüber..... soll dann nach Glühbirne aussehen.


....ohne
Quote
Was ist dann das?
Code: [Select]

analogWrite(ledPin[j], val); // Setzt das PWM Signal auf die Zufallszahl
flackert nichts und die bleiben alle aus.

Go Up