Uno und ATTinys, Gruppensteuerungen ... Anfängerfragen;)

Mhhh ... Low current wird es eher nicht, da es sich um ein recht großes Model handelt und auch einige Ultrabrights herhalten müssen. Ich werde mir erstmal das Tut zum Thema ShiftOut durchlesen, denn mir schwirrt der Kopf von dem was Du da so schreibst;)

Ich hatte die Hoffnung, die einzelnen Kreise nett und sauber in einzelne ATTinys zu schieben, denn dafür kann ich mir den Code unter Umständen noch zusammenreimen. Da Elektronik und Programmierung nicht mein Hauptgebiet ist, hatte ich gehofft, etwas "einfacher" davon zu kommen ;=

Klar kannst du einzelne berreiche in einzelne Tinys schreiben aber das ist ja der absloute CPU Overkill, deswegen dachte ich mir eine CPU die kann das alles spielend.
Mit den Attinys ist das schon ein bisschen komplizierter als mit dem Uno aber locker machbar.
Gruß
Der Dani

mal doof vorweg gefragt ... Wie könnte ich mit der ShiftOut/Register-Nummer den höheren Strombedarf realisieren? Oder anders: ich wollte mein Konstrukt am Ende per 9V Steckernetzteil versorgen.

bzw. was mir noch einfiel ... im Model werden nachher so um die 30 bis vielleicht 35 Leds verbaut sein. Das ist dann so gesehen auch wieder eine ShiftRegister-Schlacht und ich müsste vermutlich sämtliche Schaltungen mehr oder weniger ausserhalb des Models (im Standfuss) unterbringen. Da fällt mir es erst jetzt wieder ein, warum ich das mit der Tiny-Lösung so nett fand. Da kann man so nette kleine Schaltungen draus basteln. Aber gut, ich bin ja neu in der Materie und guck mal, ob es die Shift-Nummer auch tut ... erstmal :wink:

hi,

ich denke, wenn Du für "normale" LEDs nur die schieberegister nimmst und für die stärkeren ULN2803 (jeweils genug strom für 8 LEDs bis je 200mA), dann wird die platine nicht viel größer als ein shield. oder Du nimmst jeweils ein schieberegister und einen ULN2803 und teilst sie im modell auf. die dinger sind recht billig...

gruß stefan

Wenn Du die Helligkeit und/oder die Farbe der LEDd ändern willst dann brauchst Du eine PWM -Ansteuerung der LED.

Dazu hast Du 2 Möglichkeiten:
Einen Baustein zu verwenden der das macht zB den TLC5940 oder TLC5947
Eine LED-Lichterkette mit HL1606 controller oder bessere (aber auch teurer) WS2810 /WS2811. Bei denen Kannst Du jede LED einzeln in Farbe und Helligkeit ansteuern.

Für alle genannten Halbleiter gibt es Arduino-Beispiele und Bibliotheken.

Grüße Uwe

Danke eucht soweit. Bleibt nur die Frage ... welche Variante ist für einen Anfänger "leichter"? Wenn man das so sagen kann?
Schätze, irgendwie wäre eine Kombination aus allem sinnvoll. Aus welchen Bauteilen würdet ihr, mal unabhängig vom Code, Widerständen, etc. die Aufgabe lösen: 8-LED Chaser + 8 Positionslichter + 6 Flasher + mind. 16 Standardbeleuchtung (in 4 Gruppen) + 8 Effekt-Leds

So mal grob. ist noch nicht alles, aber das sind so die, die mir gerade durch den Kopf gehen. Diese Gruppen würde ich dann gerne mit irgend einem Input je nach "Betriebszustand" ein/aus/umschalten und dimmen.

hi,

blutiger anfänger bin ich selber, aber der grund, warum ich beim arduino gelandet bin, war, weil ich meine LED-lampen im wohnzimmer schalten wollte, und das ist im prinzip das gleiche, was Du auch willst. ich habe das dann auch mit 74HC595 und ULN2803 realisiert.

und weil ich grade nicht schlafen kann, unten dran eine zeichnung, was zb möglich wäre (schieberegister kannst Du bis etwa 6 hintereinander anhängen, aber PWM hat der uno nur 6. mehr wären mit TLC5940 machbar).
LED groß geschrieben wären power-LEDs oder gruppen von LEDs. Led sind "normale" LEDs.

eine solche kombination aus 2 ICs kostet bei reichelt um die 80 cent, bei conrad das doppelte, dafür sparst Du das porto, wenn einer in der nähe ist.

falls Du ein platzproblem hast, kannst Du auch darüber nachdenken:
http://erik-bartmann.de/programmierung/downloads2.html

dort bei "Wir bauen uns einen eigenen Arduino auf einem Breadboard".

gruß stefan

PWM geht sogar für alle LEDs bzw. LED Gruppen an einem ULN bzw. direkt am Schieberegister:
http://www.elcojacobs.com/shiftpwm/
Wenn das Programm ausser zu bestimmten Zeiten bestimmte LEDs schalten / dimmen sollte die ShiftPWM Lib ideal sein.
Am Ende der o.g. Seite gibt es einen kleinen Rechner mit dem Du ausrechnen kannst wieviel "Prozessorlast" das Shiften Deinem Programm "klaut".
Mario.

I flasht mich gerade total :wink: Vielen Dank für die Zeichnung!!! Was Du so alles machst, wenn Du nicht schlafen kannst :wink:

Also ich werde dann heute mal zum Elektronikladen gurken und jeweils einen 74HC595, ULN2803 und einen TLC5940 besorgen. Dann werde ich schauen, wie weit ich erstmal mit einfachen Aufbauten hinkomme (Chaser, Leds an/aus/fade usw.)

falls Du noch nicht weg bist, nimm Dir 2 oder 3 74HC595, die kosten kaum was, und du kannst dann gleich mehrere schieberegister hintereinander probieren.

gruß stefan

oder falls ich die Dinger bei meinen Versuchen zerstöre :wink:

genau, immer positiv denken.

die HCs wirst Du kaum zerstören, aber denk an die vorwiderstände für die LEDs.

und denk dran, die ULNs werden zwar mit plus angesteuert, aber auf der ausgangsseite schalten sie minus. genauso erklärt von einem elektronik-dummerl zum anderen...

gruß stefan

da sag ich mal ... nachdem ich das gelesen habe ... AHA :astonished:

so ... seit 2 Tagen beschäftige ich mich nun mit dat Janze :wink: und ich bekomm Kopfschmerzen. Echt.
Nachdem ich die ShiftOut und ShiftPWM-Geschichten ansatzweise ausprobiert habe, bin ich mit dem TLC5940 irgendwie etwas wärmer geworden. Nicht zuletzt, weil ich mir damit eine Menge Widerstände sparen kann.
Aber so sehr ich auch Google benutze, um halbwegs brauchbare Infos zu bekommen (viel zu viele Videolinks ohne jegliche Beschreibung oder Links zu Beispielen), komm ich nicht um die Frage herum:

Wie kann ich einem einzigen TLC5940 sagen: Benutze Output Pins von/bis für xy und Output Pins ab für was anderes???

Ich nehme stark an über die Tlc.set Funktion. Aber wie kann ich damit mehr als nur eine Led ansprechen?

hi,

so ganz verstehe ich Dein problem nicht. wenn Du das beispiel aus dem playground nimmst, die library reinspielst und dann den hardwareaufbau machst und ein beispielprogramm startest, da werden doch die kanäle einzeln angesprochen...

http://playground.arduino.cc//Learning/TLC5940

gruß stefan

Ja, die Beispiele laufen, wie sie sollen. Jedoch laufen sie immer auf allen Kanälen. Wenn ich beispielsweise den Chaser laufen lasse, dann spielt es keine Rolle, ob ich 6, 8 oder 16 Leds an den Outputs habe. Es werden immer alle Kanäle angesprochen. Für meinen Fall benötige ich jedoch "nur" 8 Kanäle für einen Chaser und möchte mit den übrigen 8 was komplett anderes machen. So dachte ich mir, es könnte möglich sein, das irgendwo zu definieren ... von wegen Pin 0-7 macht Funktion A, Pin 8-9 machen Funktion B, usw.

Mittels

Tlc.set (0,1000)

bekomme ich z.B. Led 1 mit Helligkeit 1000. Aber wie ginge es für Pin 0-7? Als Beispiel?

hi,

mit tlc.set(0, 1000); bekommst Du die led 0 gesetzt (man fängt mit 0 zu zählen an).

mit tlc.set(1, 3500); setzt Du die zweite led (led nr. 1).
tlc.update(); nicht vergessen am schluß nach dem setzen aller leds, die Du willst.
mit tlc.clear(); am anfang setzt Du erstmal alle zurück.

gruß stefan