LED Lauflicht mit Arduino MEGA

also jetzt habe ich es!!! vielen vielen dank für euere Hilfe. es war tatsächlich eine Brücke?!
Hauptsache es geht.

Jetzt habe ich noch etwas anderes. Ich möchte einen Sternenhimmel bauen. Dieses Lauflicht soll einen Kometenschweif simulieren.

Wie kann man es so programmieren, dass nicht nur eine LED aus geht und dann erst die andere an. Sondern noch "nachleuchtet". Ich hoffe ihr wisst was ich mein?!

moon1969:
also ich habe jetzt alles durchprobiert was geschrieben wurde, aber ist immer noch das gleiche: die letzten 4 weiße LED leuchten sehr schwach

Dir ist aber schon klar, dass weiße LED ganz andere Vorwiderstände benötigen?
Oder?

Wie kann man es so programmieren, dass nicht nur eine LED aus geht und dann erst die andere an. Sondern noch "nachleuchtet". Ich hoffe ihr wisst was ich mein?!

Du möchtest eine Ablaufsteuerung bauen.

moon1969:
also jetzt habe ich es!!! vielen vielen dank für euere Hilfe. es war tatsächlich eine Brücke?!
Hauptsache es geht.

Das solltest du uns schon etwas genauer erklären.

Was für eine Brücke ?

Welche Farbe haben die milchigen LED? Rot oder eine andere Farbe?
Wenn sie eine andere Farbe haben (weiß oder blau) dann ist es normal daß sie schwächer leuchten. Wenn Du die LED vergleichen willst, brauchst du alles gleiche LED.
Grüße Uwe

die milchigen led haben die färbe weiß.

ich habe jetzt nochmal alles nachgeschaut und geprüft. Es hat sich ein Fehler im code versteckt.

im "setup" war die zahl 10 und nicht die 14. daher leuchteten nur 10 richtig hell und die anderen 4 nur sehr schwach.

moon1969:
die milchigen led haben die färbe weiß.

ich habe jetzt nochmal alles nachgeschaut und geprüft. Es hat sich ein Fehler im code versteckt.

im “setup” war die zahl 10 und nicht die 14. daher leuchteten nur 10 richtig hell und die anderen 4 nur sehr schwach.

Aber nicht im Sketch den Du uns in #2 gezeigt hast. Dort steht 14

void setup() {                
 for (count=0;count<14;count++) {
 pinMode(pins[count], OUTPUT);
 }
 {
 Serial.begin(9600);
}
}

void  loop(){
 for (count=0;count<14;count++) {
  digitalWrite(pins[count], HIGH);
  delay(timer);
  digitalWrite(pins[count], LOW);
  delay(timer);
 }

So könnten wir Dir nicht helfen.
Grüße Uwe

eben mein Fehler. tut mir leid.

Hallo,

wegen dem Lauflicht mit Schweif.
Du musst dir merken welche LED an welcher Position welche Helligkeit hat. analogWrite()
Meinetwegen 4 LEDs die sich bewegen. Die hellste 255, dann 96, dann 16 und die letzte ist aus. Die Helligkeit verhält sich logarithmisch bei unserem Auge. Dann setzt du alle Pins eins vor und überschreibst die Helligkeit der neuen Pins. Weil du die letzte LED immer klar ausschaltest, bleibt keine komisch stehen und der Schweif bewegt sich.
Die Geschwindigkeit kannste am Anfang noch mit delay einstellen, machste dann später aber besser mit millis() wenn noch mehr dazu kommt. Mal dir dazu erstmal auf Papier einen Ablaufplan, dann setzte das in Code um. Wenn du das hast, steuerste mit Taster den Schweif vorwärts und rückwärts. Dabei lernste eine Menge neues. Blockierfreies programmieren, Taster entprellen, Arrays …
Es gibt auch noch andere schöne Ideen für einen Schweif, wo zum Bsp. die ersten LEDs mit heller werden, dann wandert wie eine Art Lichtdreieck bzw. Welle durch die Gegend. Daran kann man sich auslassen ohne Ende. Einfach anfangen und dann erst erweitern. Nicht gleich alles auf einmal machen wollen. Dann klappt das auch.

Viel Spass beim tüfteln … :slight_smile:

moon1969:
eben mein Fehler. tut mir leid.

OK, danke für dir Klarstellung.

moon1969:
eben mein Fehler. tut mir leid.

Kein Problem.
Am Ende mit vereinten Kräften (vor allem von Dir) haben wir den Fehler gefunden.

GRüße Uwe

Einen Schweif kannst du auch erzeugen, indem du jeweils die Spitzen/Köpfe setzt und
alle anderen LEDs in der Helligkeit um z.B. 20% reduzierst.

hi,

ich mache solche dinge am liebsten mit, nennen wir’s mal, blinden LEDs. wenn ich Dein array nehme:

int pins = {22,23,24,25,26,27,28,29,30,31,32,33,34,35};

und annehme, das sind PWM-outputs (will jetzt nicht nachsehen), dann erweitere ich das array um einige plätze mit dem 15. PWM-pin auf:

byte pins = {21,21,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,21,21,21};

am pin21 hängt halt nix dran.

dann kann man in einer for-schleife mit:

for (byte count = 4; count < 21; count++) {
analogWrite(pins[count], 255);
analogWrite(pins[count-1], 120);
analogWrite(pins[count-2], 20);
analogWrite(pins[count-3], 0);
}

den gewünschten schweif erzielen (ist nur so hingeworfen und nicht getestet)

gruß stefan

EDIT: ohne PWM sind halt alle drei gleich hell, geht auch…