PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Moodlight, Led Panel



hardstyleroxx
09.11.2005, 15:38
Hallo,

und zwar suche einen fertigen AVR Code für eine LED steuerung like Moodlight oder LED Panel. Weiss jemand wo ich sowas im Internet finde?

Danke schonmal.

.Johannes.
11.11.2005, 15:08
Selber programmieren macht doch viel mehr spaß =P~
Die Intensität der LED's kannst du ja mit einem PWM steuern, das
dürfte eigentlich kein problem sein

Admiral
24.03.2006, 15:58
hi,
ich würde dafür Software-PWM nehmen.
Ich will mir sowas wie Moodlight bauen,
aber als Wand, mit 2X4 oder 2X8 Elementen. Ich habe meine PWM
für 8 LEDs hinbekommen. jetzt müsste man das nur noch multiplexen.
Ideal wäre dann noch Mehrfarbigkeit. Momentan bekomme ich auch nur 8
Farbstufen hin (reicht fürs erste).
Gesteuert wird per Java über rs232 vom PC aus.

ahoi!

Goblin
24.03.2006, 16:48
SOFTWARE-PWM. Das ist auch für mich heute das Zauberwort. Für meine Enterprise-Beleuchtung hab ich nen Kasten gebaut in den eine Elektronik für ne Fernbedienung ist, und ich kann das Teil halt per Fernbedienung ein/ausschalten und verschiedene Sleeptimer einstellen. Nun würd ich die LEDS nicht gerne platt ausgehen lassen sondern Faden. Da ich das ganze nicht in die Analogelektronik ziehen will und auf dem Atmega noch Platz ist wollt ich nen Software-PWM machen. Proggen tu ich in Bascom. Mein Ansatz war: mit Waitus nen Loop basteln. Waitus nimmt aber nur Konstanten als Argument. Kennt jemand ne fertige Lösung die etwas schöner ist als 20 Scheifen?

Windi
24.03.2006, 23:42
Ich habe mich vor kurzem auch mal mit dem Thema PWM beschäftigt.
Bin zuerst auch daran gescheitert dass waitus nur Konstanten verwendet und habe es dann mit waitms probiert.
Hier mein Ergebnis (für einen Tiny13V):





'================================================= ===========
'
' ************************************
' *** ***
' *** Dimmendes Blinklicht ***
' *** ***
' ************************************
'
' µC: ATtiny13
' +Ub: 3,00 V
'
'
'================================================= ===========

$regfile = "ATtiny13.DAT"
$crystal = 128000 'Frequenz des internen 128kHz-Oszillators

Config Portb = &B00011000 'Pinb.3 und 4 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = &B11100111 'Pullups zuschalten, außer für Pinb.3 und .4
Stop Adc 'A/D-Wandler abschalten, um Strom zu sparen
Stop Ac 'Analog-Komparator abschalten, um Strom zu sparen

Dim A As Byte
Dim B As Byte
Dim Stufen As Byte

Stufen = 20

Do

For A = 0 To Stufen
B = Stufen - A
Gosub Pwm
Next
For A = Stufen To 0 Step -1
B = Stufen - A
Gosub Pwm
Next
Waitms 1000

Loop

Pwm:
Portb.3 = 1
Waitms A
Portb.3 = 0
Waitms B
Return

End

Goblin
25.03.2006, 11:13
aber sauber aussehen tut das am ende mit so ner langen wartezeit ned, oder?

Windi
25.03.2006, 11:16
aber sauber aussehen tut das am ende mit so ner langen wartezeit ned, oder?
Geht gerade noch. Länger darf es aber nicht sein.

SprinterSB
25.03.2006, 14:21
SOFTWARE-PWM. Das ist auch für mich heute das Zauberwort. Für meine Enterprise-Beleuchtung hab ich nen Kasten gebaut in den eine Elektronik für ne Fernbedienung ist, und ich kann das Teil halt per Fernbedienung ein/ausschalten und verschiedene Sleeptimer einstellen. Nun würd ich die LEDS nicht gerne platt ausgehen lassen sondern Faden. Da ich das ganze nicht in die Analogelektronik ziehen will und auf dem Atmega noch Platz ist wollt ich nen Software-PWM machen.

Was spricht dagegen, einen Timer herzunehmen und z.B. bei 10kHz IRQs erzeugen zu lassen. Dann gibst du ein einem Port z.B. nacheinander aus

1.1.1.0.0.0.0.0.0.0; das ist eine Soft-PWM mit einem Duty von 30% (3 an von 10) und einer Frequenz von 1kHz (IRQ-Frequenz / (Stufen-1)).

Einstellbate Helligkeiten gibt es 11 (von 0 (0%) bis 10 (100%)).

Admiral
25.03.2006, 21:44
Ich habe das ähnlich wie SprinterSB gemacht. Mit einem IRQ gebe ich periodisch verschiedene Bytes an einen Port aus.
zB.:
00000001
00000011
00000111
00001111
00011111
00111111
01111111

Das sind 7 Bytes. Für jedes Bit (Pin mit Lummi) gibt es 8 verschiedene Helligkeiten. 0 mal an ... 7 mal an.
Das Beispiel oben erzeugt einen Helligkeitsverlauf/-gradient (wie ein Farbkeil) von ganz hell bis ganz dunkel (oder eben andersrum).
Etwas aufwändiger ist da schon das setzten der jeweiligen Bitmuster, um für jede LED die gewünschte Helligkeit zu bekommen.
Wie macht ihr das? Haltet ihr das für sinnvoll? CPU-auslastung ist jedenfalls sehr gering.

Gruß