Mehrere LEDs gleichzeitig pulsieren lassen

Hallo zusammen,

ich bin noch ganz neu und beschäftige mich zum ersten mal mit Arduino. Ich arbeite derzeit an einem Kostüm, an dem ich ca. 20 LEDs anbringen möchte. (Ich gieße die LEDs in Harz ein und kreiere so leuchtende "Edelsteine) Ich hab dann z.B. eine Armschiene, an die 3 von diesen LEDs dran sollen. Ich habe 5 und 3 mm LEDs in Orange, die Pulsieren sollen. Also quasi langsam heller und dunkler werden im Loop, kein Farbwechsel.

Am liebsten mit einem alternativen Programm, bei dem alle LEDs durchgehend leuchten, vll kann man mit einem Schiebeschalter dazwischen wechseln?

Ich habe Programme für eine LED gefunden, weiß aber nicht, wie ich mehrere LEDs daran bekomme.

Um Platz zu sparen soll das Ganze dann hinterher auf einen Adafruit Trinket mit Power Boost und Batterie.

Kann mir da jemand weiter helfen oder mir einen Tipp geben, wo ich suchen muss? Hab mal einen Anhang beigefügt, was die LEDs können sollen, in langsam. Ich hoffe, ich konnte es einigermaßen verständlich erklären.

Ganz lieben Dank im Voraus!

Liri

LED-fading.gif

Dein Trinket wird wohl zuwenig Beine für 20 LEDs haben.

@noiasca Okay dann muss ich in der Software mal suchen...Aber dann bräuchte ich ja alle LEDs doppelt? Das bekomm ich dann doch bestimmt erst recht nicht mehr alles angeschlossen?

@combie Woher kann ich das denn sehen? Habe den Trinket Pro. Dachte weil da ja auch irre lange LED Strips dran können gehen einzelne LEDs auch? Wie kann ich rausfinden, wie viel ich dran bekomme?

In der Produktbeschreibung.

That's why we designed Pro Trinket, with 18 GPIO

Und im Datenblatt zum ATMega328P

Von den 18 Pin sind nur 6 mit Hardware PWM zu betreiben.

Tipp:
Verwende WS2812/APA102 oder ähnliche.

Jede LED, die Du pulsieren lassen möchtest, braucht einen PWM-Ausgang, die sind mit "~" gekennzeichnet. Zähle sie durch und Du hast die Antwort.

EDIT 20180609: Bitte auch #14 lesen!

LED Strips wie APA102 haben ein integriertes IC mit sowas wie einem Schieberegister und RGB-LEDs eingebaut. Da kannst Du ganz viele von anschließen, weil in Reihe geschaltet. Wenn Du allerdings 300 Lichtpunkte verwenden möchtest, brauchst Du eine Autobatterie oder eine Brennstoffzelle für 18 A Maximum. Aber 20 Lichtpunkte, stromsparend angesteuert, wären wohl möglich.

Hi,

soll jede der 20 LEDs einzeln angesteuert werden können, also jede im eigenen Rhythmus, oder können (sollen) davon auch welche im genau gleichen Rhythmus gesteuert werden können.
Der Unterschied ist, ob man (bei nicht LED-Stip) jeweils einen GPIO mit PWM braucht, oder einfach welche parallel ansteuert (z.Bsp. über Transistor).

Gruß André

Die Alternative:
Charlieplexing mit SoftPWM.

Aber das dürfte eine anspruchsvolle Aufgabe werden......

Udo Klein hat mal (vor seiner DCF77-Zeit) gezeigt, was man mit einem Uno und 20 LEDs so alles machen kann.

"Mehrere LEDs gleichzeitig pulsieren lassen", auch 20 LED an 20 Pins, geht. Punkt.

Hi

Wir hatten hier Mal eine Art Wettbewerb - zumindest haben sich die Foren-Member gegenseitig zu verschiedenen Lösungen hinreißen lassen:
Blink-SKetch Doc_Arduino
Blink-SKetch combie (Klassen)
Blink-Sketch michael_x (Funktion)

Zumindest Das, was ich mir daraus 'auf Platte gebannt' habe - vll. auch was für Dich dabei?

MfG

Also wenn da 5V rauskommen kann ich doch je Pin 2 LEDs in Reihe und eine Parallel machen oder? Dann könnte ich 3 LEDs an jeden Pin bekommen oder verstehe ich was falsch?

Es soll alles parallel pulsieren, also quasi alles gleich.

Wie kann ich denn beim Fade dafür sorgen, dass der Abstand zwischen zwei Fades länger ist?

Lirithay:
Also wenn da 5V rauskommen kann ich doch je Pin 2 LEDs

Wenn du mit 5V arbeitest, dann kannst du je nach Farbe (rot, grün, orange gelb) zwei Leds in Reihe schalten. Diese Leds brauchen gewöhlich jeweils ca. 2V. Blau, weiß oder Smaragdgrün braucht ca. 3,2-3,6V. Du halbierst gegenüber der Parallelschaltung den Strom, was der Batterielebensdauer deutlich zu gute kommt. Geschickt wäre ein Logik-Level-Mosfet, damit du wenig Verluste da hast. An den kannst du alle Led-Paare parallel schalten mit jeweils einem Vorwiderstand.

Hi

Spannung ist wie Wasserdruck - wenn bei Dir 4...8bar aus der Leitung kommen, kannst Du auch zwei Waschmaschinen in Reihe und eine Parallel anklemmen ... hier klingt Das jetzt gar nicht mehr so logisch, oder?

Dann nur, daß Du Das Mal gehört hast:
Spannung liegt an, Strom fließt.
'Da' kommt also keine Spannung raus, sondern liegt 'nur' an.
Aufgrund des elektrischen Widerstand ergibt sich ein Strom, Den der Arduino liefern können müß.
Kann Er Das nicht, qualmt's.
Dann sind LEDs noch ganz miese Verbraucher - Diese werden mit einem Strom betrieben - die Spannung ergibt sich durch die Temperatur des Bauteil - ohne Vorwiderstand (Der auch dahinter liegen darf) begrenzt nur die LED den Strom, was normal nicht lange gut geht.
Z.B. 'leben' die 'Throwies' Wikipedia-Link) auch nur, weil die verwendete Batterie einen recht hohen Innenwiderstand hat - an einer normalen Batterie oder einem Akku mit gleicher Nennspannung wären Diese binnen Millisekunden tot.

MfG

michael_x:
"Mehrere LEDs gleichzeitig pulsieren lassen", auch 20 LED an 20 Pins, geht. Punkt.

Was Udo da mit for und while macht, ist schon interessant, keine Frage. Nur muß man sich darüber bewußt sein, daß blockierende Programmierung für Software-PWM verwendet wird. Meist ist das nicht so zielführend, aber für dieses Thema könnte es sogar passen.

Damit relativiere ich meine Aussage aus #5 :slight_smile:

Puh, das klingt alles komplizierter als ich dachte...

Ich habe am Wochenende mal das Fade Programm aus dem Arduino Uno auf einem Breadboard mit 2 LEDs getestet. Das ging schonmal ganz gut.

Was ich allerdings noch immer nicht so ganz verstehe...Ich habe das immer folgendermaßen verstanden:

Der Uno gibt an jedem Pin 5V aus (korrekt?)

Wenn ich LEDS in Reihe schalte, addiere ich die Spannung, die Stromstärke bleibt aber gleich.

Wen LEDS parallel schalte, addiere ich die Stromstärke, die Spannung bleibt aber gleich.

Daraus folgere ich, dass ich an einen Pin zwei parallel geschaltete Stränge anschließen kann (da dann 2 Volt, 40mA bei meinen LEDs) inkl. passender Widerstände. Einen davon könnte ich mit einer Reihenschaltung versehen somit insgesamt 4V und immernoch 40 mA? Theoretisch sogar noch mehrere da ich ja nur darauf achten müsste, dass die mA (ich meine jeder Pin kann 150) und die Volt (5V) eingehalten werden oder habe ich da einen Denkfehler?

Da es ein Kostüm werden soll, möchte ich am Ende möglichst von meinem Hauptchip aus z.B. einen Kabelstrang zum Arm ziehen mit je 3 LEDs, einen zum Bein usw.

Ja, jeder Pin liefert bei HIGH 5Volt am Ausgang mit max. 20 mA (absolutes max. 40mA)
Möchtest du am Pin mehrere Leds schalten/steuern kannst du einen Transistor/Mosfet dazu verwenden.
Mehrere Leds parallel zu schalten ist keine gute Lösung und nur dann praktikabel wenn jede Led einen eigenen Vorwiderstand hat.

Aber mit eigenem Widerstand ginge das? Wie schalten die denn dann LED Stripes an so einen Pin? die brauchen ja 20mA je LED??

Wofür ist der Transistor und wie wende ich den an?

AM Ende soll alles an einen Adafruit Trinket mit Power Boost, wie kann ich denn rausfinden, was da an mA an jeden Pin kann?

Der Transistor bietet dir die Möglichkeit den Ausgangsstrom des Controllers zu "verstärken".
Damit erreichst du bei 20 mA vom Controller einen deutlich größeren Strom zum Betrieb der Leds.

Wie du Transistoren verwendest, findest du hier: Grundschaltungen des Transistors (Transistorschaltungen)

Hallo Lirithay,

laut Datenblatt ist auf einem Triket ein Attiny85, auch der darf mit maximal 40mA belastet werden, besser nur 20mA.
Für eine LED kein Problem, oder eben einen Transistor als Schalter benutzen!
Wird ein Transistor eingesetzt, muss der Arduino/Attiny nur einen Steuerstrom zur verfügung stellen, damit dieser - je nach Typ - ein Vielfaches an Strom schalten kann, ein BC337 zum Beispiel bis 800mA, oder eben 40 LEDs mit je 20mA.

Den Widerstand R1 würde ich zwischen 500 Ohm und 1k Ohm dimensionieren, R2 (a,b,c ...) je nach Farbe der LED.
Rote und Gelbe LEDs haben ca. 2V Flussspannung, und bräuchten ca. 150 Ohm Widerstände bei 5V Versorgungsspannung, Blaue, Weiße, und einige Grüne LEDs haben ca. 3V Flussspannung und bräuchten 100 Ohm Widerstände. Aber ein Blick in die Datenblätter hilft immer.

Gruß André

Das bedeutet ich gehe von Chip zum Transistor und von dem aus könnte ich z.B. mit dem BC337 800mA ausgeben? Die Volt bleiben aber bei 5?

(Sorry wenn ich so doof Frage, aber das ist noch komplett Neuland für mich.

Dann solltest Du ein paar Grundlagen lernen, z.B. hier. Sonst grillst Du Deinen Arduino früher, als Du denkst.

Gruß Tommy