Forum: Mikrocontroller und Digitale Elektronik LEDs an Atmel Controller


von martin (Gast)


Lesenswert?

Hallo,
ich habe 10 LEDs, die ich alle einzeln ansteuen will,jedoch muss dafuer
der Programmcode so klein wie nur möglich sein, ich habe dafür kaum
noch Speicherplatz.
Ich hatte vor das mit einem Schieberegister zu machen, aber das ist so
Codeaufwendig, lieber waere mir auf einem Port des Atmels 4 Bit zu
senden und das dann extern ausgewertet wird, was leuchten soll.
Wie baue ich so eine Schaltung am besten?

von Matthias (Gast)


Lesenswert?

Hi

Mit 4 Bit kannst du keine 10LED's unabhängig steuern. Wo soll auch die
fehlende Information herkommen? Eine C-Routine zur Ansteuerung eines
Schieberegisters (74HC164) mit zwei Pins kompiliert hier zu 24 Byte
Code. Wenn das nicht kompakt ist weiß ich auch nicht.

Matthias

von martin (Gast)


Lesenswert?

4Bit muesste doch reichen, wenn man ein Treiber IC mit vor die LEDs
schaltet.
2^4 = 16, also sind doch mit 4Bit 16 verschiedene Werte möglich.
Das sollte dann ja eigentlich ausreichen. Die Frage ist nur was gibt es
für ICs die man nehmen kann.

von leo9 (Gast)


Lesenswert?

Mit der Überlegung 2^4 = 16 kannst du genau eine von 16 Leds
einschalten. Für zehn unabhängige Leds brauchst du 10 Bit. Und wenn du
mit den 4 Bit multiplexend steuern willst brauchst du weit mehr
source-code als für die Schieberegister-Ansteuerung.

grüsse leo9

von Flite (Gast)


Lesenswert?

Mit 10 Leds kannst du aber weit mehr als 16 verschiedene Möglichkeiten
haben.

Es sind schon allein 10 Möglichkeiten, wenn zur gleichen Zeit nur je
eine LED leuchten soll. Sollen alle Kombinationen möglich sein, sind
das dann 2^10 Möglichkeiten -> du benötigst also 10 Bit.

Flite

von Flite (Gast)


Lesenswert?

ich war wohl zu langsam ;)

von Manuel (Gast)


Lesenswert?

Gibt es denn keinen IC, dem man z.B in einem Takt 4 Bit übergibt
(vielleicht noch einen Takt warten) und dann im nächsten Takt wieder
4Bit.
So kann man die LEDs zwar nur z.B. alle 3-Takte (3x4Bit) aktualisieren,
müsste aber doch reichen.
Serh viel Code dürfte es dann ja auch nicht sein.
   Habe aber keine Ahnung ob es sowas gibt.

mfg
 Manuel

von martin (Gast)


Lesenswert?

Ja, stimmt ihr habt recht, da hatte ich einen Denkfehler.

von Dieter B. (Gast)


Lesenswert?

Hallo

Und wenn es den Chip nicht geben sollte, kannst du dir den ja

mit einem kleinen AVR selbst bauen.

Ist doch das schöne an den Dingern, das sie meistens das machen, was
man will.

in diesem Sinne

MFG
Dieter

von Manuel (Gast)


Lesenswert?

an könnte ja auch, wenn man nicht kontinuierlich aktualisieren will,
1.Port (Bit) zum start auf 1 setzen, dann 4 Takte lang je 3Bit senden
(=12Bit) dann den 1. wieder auf 0.

mfg

von Peter D. (peda)


Lesenswert?

@Manuel,

"So kann man die LEDs zwar nur z.B. alle 3-Takte (3x4Bit)
aktualisieren"

es ist egal, ob 3*4Bit oder 10*1bit.
Ob Du nun eine Schleife 3* oder 10* durchläufst, ändert nichts an der
Codegröße.


Peter

von Manuel (Gast)


Lesenswert?

Es stand ja z.B.

von Eddi (Gast)


Lesenswert?

Nicht gleich schlagen...
Aber wie wär's mit einem größeren Controller. Je nachdem welchen du
einsetzt, tut's vielleicht der nächstgrößere. Ich meine, falls das
dann kein mechanisches Platzproblem wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.