Forum: Mikrocontroller und Digitale Elektronik 8 LED dimmen unabhängig voneinander


von Dok... (Gast)


Lesenswert?

Hallo,
bin neu beim uC...
möchte 8 Leds unabhängig voneinander dimmen,
geht das mit Atmega8 ?

Villeicht ein Beispiel mit C ?

von Hans (Gast)


Lesenswert?

> geht das mit Atmega8 ?

ja

> Villeicht ein Beispiel mit C ?

ja, auch mit C.

von Dok... (Gast)


Lesenswert?

has jemand ein Beispiel in C (quelle Code)?

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

>has jemand ein Beispiel in C (quelle Code)?

Guck doch mal in der Codesammlung.

von Yamato (Gast)


Lesenswert?

Dein Stichwort ist Software Pulsweitenmodulation (Soft-PWM).
Gibt dazu jede Menge Beispiele für ATMega sowohl in ASM als auch in C. 
Einfach mal nach googeln.

von Peter D. (peda)


Lesenswert?

Hier ein C-Beispiel mit AT89C2051:

Beitrag "PWM-Lauflicht"


Peter

von Karl heinz B. (kbucheg)


Lesenswert?

Kannst du einen Timer ansteuern, so dass er dir regelmäßige
Interrupts auslöst?
Das ist dein erstes Ziel. Der Rest ist dann leicht.

Du baust dir softwaremässig ein PWM auf:

Für jede LED gibt es eine unsigned char Variable, die
einen Grenzwert darstellt.

In deiner Interruptfunktion zählst du einen Zähler hoch.
Dann wird für jede LED dieser Zähler mit dem Grenzwert
für diese LED verglichen. Ist der Zähler größer als der
Grenzwert, schaltest du die LED aus, andernfalls schaltest
du sie ein.

Und das wars dann schon.
1
volatile unsigned char Leds[8];
2
unsigned char PWMCounter;
3
4
ISR( ...... )
5
{
6
  unsigned char i;
7
8
  PWMCounter++;
9
  if( PWMCounter == 102 )
10
    PWMCounter = 0;
11
12
  for( i = 0; i < 8; ++i ) {
13
    if( PWMCounter > Leds[i] )
14
      // schalte Led i ein
15
    else
16
      // schalte Led i aus
17
  }
18
}

Jetzt musst du nur noch dafür sorgen, dass die
ISR vom Timer oft genug aufgerufen wird. Aber das
ist dein Teil der Übung :-)

Leds[x], x 0 bis 8, kannst du dann Werte von 0 bis 100
zuweisen. Bei 0 ist die Led komplett dunkel, bei 100
leuchtet sie am hellsten. Zwischenwerte entsprechen einer
Dimmung.

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.