www.mikrocontroller.net

Forum: Codesammlung HSV RGB Led Dimmer, C Code & Video & Doku

Autor: Fly (Gast)
Datum: 06.10.2006 18:42
Dateianhang: RGB_LED_Dimmer.zip (627,3 KB, 2625 Downloads)

HSV RGB Led Dimmer;
Veröffentliche hier mal den aktuellen Stand.
C-Programm dimmt 10 RGB Farbtöne. (Vorführspielchen)
Näheres seht ihr im Video, C-Code oder in der Doku.

Kritik, Ideen und natürlich auch Lob sind gerne Willkommen.

Enjoy!

Fly.
Autor: Dirk (Gast)
Datum: 10.10.2006 15:13

Hi,

vielen Dank für die Veröffentlichung.

Gruß,
Dirk
Autor: Dario (Gast)
Datum: 30.10.2006 16:45

Hallo Fly,

Super Ding, das mit dem HSV-Farbraum.

Zur Kallibrierung mit den Widerständen habe ich noch eine Idee.
Du gehst ja momentan davon aus, dass die Einschaltzeit der LED
proportional deren Helligkeit ist, dem ist aber nicht so, daher wäre
eine Tabelle angebracht, aus der sich für jeden Helligkeitswert (R,G,B)
der entsprechende PWM Wert ermittelt. Dann kann man die Vorwiderstände
mit in die Tabelle integrieren, dann brauchst Du nicht einmal diese so
aufwendig zu bestimmen.
Könnte dann mit einer einmaligen Einstellung erledigt werden, die man im
EEPROM abspeicehrt.

Ansonsten aber super Arbeit,

Schöne Grüsse aus dem Ruhrgebiet,

Dario
Autor: Fly (Gast)
Datum: 30.10.2006 21:56

Hallo Dario!

Deine Idee habe ich mir auch schon durch den Kopf gehen lassen. Nur wie
bestimme ich die Helligkeitswerte? Mir ist schon klar dass die
Helligkeit nicht linear mit der PWM steigt. Die Helligkeitswahrnehmung
ist aber subjektiv... Man müsste sie messen können und die PWM
entsprechend anpassen.
Oder reden wir aneinander vorbei?
Sorry, habe gerade nicht so viel Zeit (Studium)

Gruss, Fly.
Autor: SeppK (Gast)
Datum: 31.10.2006 08:04

Habe eben ein Projekt am Laufen mit einer RGB-Led. NAch langem Suchen
fand ich diese hier:

http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto...

Macht ca. 3,5 cd bei einem Öffnungswinkel von 100 Grad! Der Preis geht
auch noch.
Autor: Fly (Gast)
Datum: 31.10.2006 10:34

Naja, meine Led ist einiges heller, dafür habe ich nur einen
Abstrahlwinkel von 60°
Autor: SeppK (Gast)
Datum: 31.10.2006 10:48

Tja, viel Licht bei einem engen Abstrahlwinkel können alle. 3,5cd bei
100 Grad (wie bekommt man denn hier das Gradzeichen hin?) ist schon
recht gut.
Autor: emil (Gast)
Datum: 31.10.2006 11:25

Habe den Code von Fly getestet, es funktioniert bei mir einwandfrei. Ich
betreibe damit 10 RGB LEDs, will mir aber eine grössere RGB Matrix
bauen.
Nicht ganz in Video-Auflösung (320x240 RGB LEDs hehehehe) sondern ehe
was mit 4-5 Spalten a 16-20 RGB LEDs jede, ca. 1.5m hoch, sodass man
doch interessante Farbmuster darstellen kann (vielleicht am PC
generieren und dann per RS232 an die LEDs schicken).
Autor: Fly (Gast)
Datum: 31.10.2006 17:07

@Emil
Freut mich das es klappt!
Ist die Doku / der Code einigermassen nachvollziehbar? War mein erstes
richtiges C Projekt.

Betreibst du die 10 Leds parallel oder hat jede seine eigene HSV/RGB
Werte?
Autor: emil (Gast)
Datum: 31.10.2006 17:36

Hi,

ja, der Code ist ganz OK, gut gemacht! Besonders das Dimmen war für mich
ganz wichtig!

Ich multiplexe die RGB LEDs, somit ist jede einzeln adressierbar. Leider
machen sie zur Zeit nichts mehr, als per Zufallsgenerator die Farbe zu
wechseln.

Wie gesagt, ich will eigentlich ca. 100 RGB LEDs einzeln ansprechen
können, vielleicht jede 10-16 mit eigenem Controller, leider sind die
RGBs verhältnismässig teuer; habe 50 Stk bei ebay gekauft (Hong Kong,
was sonst), leider ist die Farbmischung sehr schlecht und noch dazu
unterschielixh von LED zu LED :(.
Habe eine Anfrage bei Nichia getätigt, die wollen 1.90 Euro / LED
netto...na ja, als Hobby Projekt ein wenig teuer, schade
eigentlich...:((
Autor: Fly (Gast)
Datum: 31.10.2006 21:58

Jo es gibt enorme Qualitätsunterschiede bei den Leds. Ich bin mit meinen
zufreiden. Ich möchte einen 4x4x4 Led-Cube im Plexiglasgehäuse
realiseren.
Autor: emil (Gast)
Datum: 01.11.2006 10:24

Autor: Benedikt K. (benedikt)
Datum: 01.11.2006 12:52
Dateianhang: main.c (3,5 KB, 1118 Downloads) | formatierter Code

Ich habe die Software mal float-frei gemacht: Die HSV und RGB Werte sind
jetzt chars (was für eine LED ausreichen sollte).
Es gibt aufgrund der Tatsache, dass sich 256 nicht ohne Rest durch 6
teilen lässt ein paar Rundungsfehler, aber wenn man die Codegröße und
die Berechnungszeiten vorher und nachher vergleicht, dann kann man das
in Kauf nehmen (außerdem sieht man den Unterschied sowiso nicht).
Autor: Fly (Gast)
Datum: 01.11.2006 15:48

Danke Benedikt, du hast geschafft, woran ich gescheitert bin :)
(Siehe Doku)
Ich kann dein Code zur Zeit nicht testen. Frage:
Sind die Rundungsfehler beim Dimmen sichtbar?
Autor: Benedikt K. (benedikt)
Datum: 01.11.2006 16:59

Beim dimmen sieht man nichts, nur beim Übergang der Farben (H) von 255
auf 0 (von violett-rot auf rot) werden 2 Schritte auf einmal gemacht,
denn eigentlich bräuchte man einen Wertebereich von 0-257, die Farben
256 und 257 lassen sich daher nicht anzeigen. Aber das fällt
normalerweise nicht auf.
Autor: emil (Gast)
Datum: 02.11.2006 17:10

Ein grosser Lob auch an Benedikt!

Habe den "float-freien" Code von Benedikt auch getestet, ganz schön und
knapp! Der Atmega48 langweilt sich geradezu damit, nur 20% belegter
Speicher (12%davon von meinem Programm), die LEDs behalten die Farbe
beim Dimmen perfekt! Und mit den fehlenden Farben 256 und 257 kann ich
leben :))

Suche jetzt eifrig nach günstigen echten (!) RGB-LED Quellen.
Autor: Fly (Gast)
Datum: 02.11.2006 21:02

@Benedikt:
Wie sieht es mit den Farbübergängen aus, wenn ich einen Farbwechsler
möchte und H langsam durchlaufe, ist dann der Farb-Verlauf nicht etwas
sprunghaft mit 8B Auflösung? Ist mir heute noch spontan in den Sinn
gekommen :)
Autor: emil (Gast)
Datum: 02.11.2006 21:32

hehe sorry, vielleicht bin ich hyperaktiv, ist aber doch gut gemeint;
habe genau das implementiert (mit dem Code von Benedikt), langsamer
Farbverlauf bei 20 Leds gleichzeitig, jede mit unterschiedlichem
Grauwert V und die Farbe verläuft recht gleichmässig in die nächste.
Habe hier eine Lampe mit RGB Luxeon, die mit reinen RGB_Werten (wieder
8B)angesteuert wird, und sie ist viel nervöser beim Farbübergang, als
mit dem HSV.
Benedikt, jetzt bist Du am Ball :)))
Autor: Benedikt K. (benedikt)
Datum: 03.11.2006 08:35

Du hast jetzt also die RGB Werte direkt verändert, ohne HSV und was
heißt nervöser ? Springen die Farben ?
Autor: emil (Gast)
Datum: 03.11.2006 11:59

ja, genau; bei meiner Lampe generiere ich je einen aktuellen R-, G-, und
B-Wert per Zufallsgenerator (8-Bit); ich speichere die alten RGB Werte
und erhöhe/decremenitiere um eins die neuen, bis sie den alten gleich
sind. Dies sollte effektiv einen fliessenden Farbübergang gewährleisten.
Nun habe ich dasselbe mit deinem Code versucht, indem ich lediglich H
zufällig wähle und um eins inc./dec. bis er dem alten H gleicht.
Seltsamerweise ist der Farbübergang jetzt glatter geworden, im Vergleich
zur alten RGB-Methode.
Autor: Elektrikser (Gast)
Datum: 18.11.2006 22:13

Ich habe gerade wieder eine Idee, von der ich noch nicht weiß, ob es
klappt. Mein Problem ist, dass ich eine größere RGB-LED habe, die einen
Strom von 150mA pro Strang aushält. Wenn ich da normale Vorwiderstände
nehme, muss ich auf 1W-Widerstände ausweichen. Jetzt meine Idee:
Kann man nicht für die Vorwiderstände LM317 in der Stromregelschaltung
verwenden und den Widerstand, den man da braucht durch ein Poti
ersetzen? Hätte den Vorteil, dass nichts warm wird und die Ströme sauber
eingestellt werden können. Das einzige, was ich nicht weiß ist, wie der
Regler die PWM verträgt und was er da macht...

Gruß Elektrikser
Autor: Benedikt K. (benedikt)
Datum: 19.11.2006 15:16

Elektrikser wrote:
> Kann man nicht für die Vorwiderstände LM317 in der Stromregelschaltung
> verwenden und den Widerstand, den man da braucht durch ein Poti
> ersetzen? Hätte den Vorteil, dass nichts warm wird und die Ströme sauber
> eingestellt werden können.

Dann betreib die Schaltung mal mit >20V. Innerhalb kürzester Zeit wirst
du dir den Finger am LM317 verbrennen.
Davon abgesehen ist der LM317 zu langsam für die Ansteuerung mit PWM.

Wiso brauchst du eigentlich 1W Widerstände ?
Wenn die Betriebsspannung niedrig genug ist (z.B. 5V), dann reichen
problemlos 1/2W Widerstände.
Autor: Elektrikser (Gast)
Datum: 19.11.2006 19:37

O.K. wenn ich die Led mit PWM betreibe, reichen die 0,5W-Widerstände.
Bei Volllast wäre es knapp. Dass der LM317 zu langsam ist habe ich mir
schon gedacht. War halt ein Schnellschuß...
Autor: Stefan Edenharter (edi_2k)
Datum: 01.12.2006 10:26
Dateianhang: HSV.rar (507,4 KB, 532 Downloads)

Hallo.

Klasse Projekt. Ebenso die Doku von Fly.

Ich habe es vorher mit einem RGB-Sweep versucht. Es hat auch
funktionert, jedoch sind saubere Farbübergänge ziemlich schwierig
hinzubekommen, da zum einen die LEDs unterschiedliche Sättigung haben,
die Wahrnehmung des Auges mit einer Wurzelfunktion bestimmt ist, und man
sich separat um die Helligkeit kümmern muss, damit ein konstantes
Helligkeitsniveau herrscht.

Ich hätte nicht gedacht, dass die Umsetzung der Gleichungen, die man bei
Wikipedia zum Thema HSV-Raum findet, so reibungslos funktioniert.
Ich habe das ganze mal auf einen PIC18F4550 (48MHz Intern) ausprobiert.
Ebenso einen kontinuierlichen Sweep über 360 Farben (H=H+1) bei gleicher
(V=0.5) Helligkeit.

Ich verwende 3 einzelne LEDs von OSRAM (wegen der größeren Helligkeit).

R: LS 5435
G: LV5411
B: LB 543C

Deshalb brauche ich auch einen Diffusor: Artikel-Nr.: 183562* - 62 bei
Conrad.
Falls jemand weiß, wo es diese Diffusorfolien größer und billiger gibt,
bitte Bescheid geben.

Die Vorwiderstände (siehe Schaltplan im Anhang) wurden mit der Anleitung
von Fly bestimmt.

:)
* Anzeige-Link
Antwort
Autor: emil (Gast)
Datum: 03.12.2006 14:17

Hi Stefan,

das mit dem Diffusor finde ich sehr gelungen!

Soweit mir bekannt, verwenden fast alle Werbefirmen die
 3M™ Optical Lighting Film (OLF)-Folie für solche Zwecke,
habe leider noch keine Quelle für Kleinmengen ausfindig gemacht :(

Hast du die Diffusor-Scheiben beim Conrad bestellt oder liegen sie dort
in der Filialle? Wo denn, bei den Leiterplatten?

Und wieviel ist der Abstand zwischen LEDs und Diffusor bei dir? Kann man
die LEDs ganz am Diffusor pressen um das ganze flach zu bekommen oder
ist ein Mindestabstand nötig?
Autor: Stefan Edenharter (edi_2k)
Datum: 04.12.2006 09:08

Hallo emil.

ich erkundige mich vorher in der entsprechenden Filiale (bei mir ist das
Wernberg), ob die Teile da sind. Das war in diesem Fall nicht so.
Sie wurden bestellt und nach 3 Tagen bekam ich ne sms, dass die
diffusorscheiben da sind.

Bzgl. Direkt auf die LEDs würd ich sie nicht pressen, da man bei 3
einzelnen 5mm LEDs diese noch ziemlich gut mit dem Auge auflösen kann.
Ab 30-40 mm kann man die einzelnen LEDs nicht mehr erkennen.

Leichter hat man das natürlich mit RGB-LEDs. Das hängt jedoch von deiner
Anwendung ab, ob die geringere Helligkeit reicht.

gruß
stefan
Autor: MaG2k (Gast)
Datum: 04.12.2006 19:59

Hallo Leute,

das sachaut ja alles schon recht schön aus...aber eines ist mir bisher
aufgefallen. Dieser Algortihmus ermöglicht zwar einen schönen
Color-Sweep doch es fehlen ein paar Farben...mir selbst fehlte bei den
Videos zum Beispiel das Weiß.
Ich habe schon einige Codes hier versucht durchzuschauen und der letzte
den ich hatte ermöglichte nur das Dimmen 7 verschiedener Farben. Da ist
ein solcher Farbdurchlauf schon bei weitem schöner. Wär aber wirklich
schön wenn neben dem H-Wert auch S und V entsprechend variiert werden
würden um mehr Farbvielfalt zu bekommen.

Ich schau mir mal den Code an...denn ich möchte mit dem RGB-LED Projekt
auch mal einen richtigen Einstieg in den AVR-Programmierung bekommen!
:-)

LG
MaG2k
Autor: Christian R. (Gast)
Datum: 22.01.2007 13:16

Hallo.

Seht ihr eine Möglichkeit, aus der einen RGB LED mal so 200 oder mehr zu
machen? Ich möchte ein RGB-LED Panel (Licht-Therapie) für eine Infrarot
Kabine bauen.
Ich hab allerdings Angst vorm Strom: 200 Led's mit ca. 18mA x 3 (RGB)
ist etwas viel (10,8 A!)

Könnt ihr mir weiterhelfen?
Autor: Fly (Gast)
Datum: 22.01.2007 18:25

Was bedeutet Lichtherapie, jede Led muss 20/Sekunde die Farbe wechseln?
Bei deinen Angaben sag ich mal NJAEIN.

Strom sollte kein Problem sein, bei richtigem Aufbau... DC-DC oder AC-DC
Wandler heisst das Zauberwort.
Autor: Christian R. (mrrotzi)
Datum: 22.01.2007 18:54

Naja, es gibt da so Lichtherapie-Lampen mit Steuerung. Da kann man eine
Farbe einstellen oder gaaaanz langsame Verläufe von einer Farbe zur
nächsten machen (lassen). so, und das ganze Ding soll eben in eine
Infrarot-Kabine eingebaut werden (nebst ein Autoradio mit mp3 Player).
Das alles soll zur Entspannung dienen.

Nun hab ich mir vorgestellt, ich mach eine Schaltung wo ich mit 3
Tastern Rot, Grün und Blau Werte mische. Also somit fast jede Farbe
erziele.
Um aber den Raum (knappe 2 m2) schön auszuleuchten, müsste man schon
etliche LEDs verbauen.
Jetzt ist eben die Frage, wie man das geschickt angeht.
Dann hab ich deinen Beitrag hier gefunden und mir gedacht, das wär mal
die richtige Ausgangssituation. Nur müsste ich viele viele LEDs
verbauen.

Frage: Wieviel LEDs müsste man einbauen? Gute Frage, ich weiß. Besser
wäre es wahrscheinlich, wenn man das teilt in so 10x10 LEDs Blöcke und
wenn man das Ding dann in der Kabine anwirft und merkt, es ist noch
nicht genug, dass man dann die Möglichkeit hat, noch so Blöcke dazu zu
bauen!

Was kostet eigentlich so eine LED?
Autor: Fly (Gast)
Datum: 22.01.2007 21:08

"Nun hab ich mir vorgestellt, ich mach eine Schaltung wo ich mit 3
Tastern Rot, Grün und Blau Werte mische. Also somit fast jede Farbe
erziele."

Ist nicht der Sinn des HSV-Farbraums. Du wählst den Farbton und die
Helligkeit. Mit reiner RGB fumelei bringst du vielleicht den Farbton
hin, aber nicht die Helligkeit! Dimmen ist wichtig!

"Frage: Wieviel LEDs müsste man einbauen? Gute Frage, ich weiß. Besser
wäre es wahrscheinlich, wenn man das teilt in so 10x10 LEDs Blöcke "

Vorher meintest du was von ca 200 Leds... du kannst dir den Ledabstand
selbst ausrechnen mit vorgegebener Fläche. Ich fürchte aber mit 200
kommst du nicht sehr weit! Mit 10x10 = 100 Leds! erweitern finde ich
auch nicht gut. Überlege dir erst einmal welchen Led Abstand du willst.
Dann kannst du rechnen.
Ich weiss ja schliesslich nicht wie du dir das genau vorstellst.

"Was kostet eigentlich so eine LED?"
Ich würde dir zu kleinen Leds, max 3mm Durchmesser, mit möglichst
grossem Abstrahlwinkel raten! Ausserdem muss sie für das gesamte
Farbspekrum geeignet und difus sein. Preis je nach Stückzahl, ich denke
ca 50 cent / Led minimum.
Bei rgb Leds ist geiz nicht geil.

Falls nicht alle Leds gleichzeitig den selben farbton / helligkeit haben
sollen, überlege dir wieviele Kanäle du haben villst und wie du das
physisch aufteilst.
Hast du einigermassen eletronki und C-Programmierung Kenntnisse? Wenn
nicht, wird das kein Wochenende Projekt.
Autor: Christian R. (mrrotzi)
Datum: 23.01.2007 09:48

Du hast recht, dimmen ist wichtig - deswegen HSV. Du weißt aber, worauf
ich hinaus wollte mit RGB ;o) (hab mich schlecht ausgedrückt)

Den Abstand der LEDs hätte ich mal mit 5mm angenommen. Aber bei 5mm
LEDs.

Ich bin aber schon am Grübeln, ob die ganze Sache nicht einfacher wird,
wenn ich "normale" 12V Halogen Lampen nehme, von jeder Farbe eine, und
die dann vermische durch dimmen!

Aber: so ein LED Panel würde schon extrem cool aussehen, ausserdem wäre
da eine quasi größere Fläche, wo das Licht abstrahlt. Bei einzelnen
Spots müsste man irgendeine diffuse Glasplatte davor tun, damit das
wirkt, glaube ich.

Bezüglich Elektronik und Programmierung sehe ich meine Schwäche im
Moment in der Ansteuerung der vielen Leds! Das ist es, wo ich mich nicht
auskenne!

Nur mal angenommen, man würde das hinnehmen, dass eben nicht alles LEDs
gleich leuchten (ergibt vielleicht sogar ein ganz angenehmes Licht?!)
Wie könnte man so eine Kaskadierung realisieren? Könntest du mir ein
paar Tipps für die Schaltung geben?






Autor: Fly (Gast)
Datum: 23.01.2007 10:06

"Den Abstand der LEDs hätte ich mal mit 5mm angenommen. Aber bei 5mm
LEDs."

Rechnen ist wohl nicht deine Stärke... Schon mal ausgerechnet wieviele
tausend Leds du dann brauchst?
Autor: Christian R. (mrrotzi)
Datum: 23.01.2007 10:44

Sehr nett von dir! 10x10 (cm) sind 100 LEDs also 1 LED / cm2
Ich hab auch immer davon gesprochen: viele LEDs anzusteuern.
2 oder 3 hundert in dem Fall. Deswegen die Aufteilung in so eine Art
Blöcke, damit man's erweitern kann, falls es zuwenig Licht gibt.
Autor: Fly (Gast)
Datum: 23.01.2007 11:34

Aber definitiv nicht bei 5mm Led Abstand, so wie du geschrieben hast.
Ausserdem bei 1 m^2 Fläche gibt es immer noch 100 x 100 Leds!
Autor: Fly (Gast)
Datum: 23.01.2007 13:41

Oder möchtes du in deiner Kabine einfach nur eine, zwei, drei 10x10cm
Matrix an einer Wand? Das würde meiner Meinung nach komisch aussehen.
Ich würde von allen Seiten oder mindestens von der Front Seite aus
beleuchten und die Leds regelmässig über die Gesamtfläche verteilen.
Ledabstand ca 5-15 cm...
Autor: Christian R. (mrrotzi)
Datum: 23.01.2007 13:59

also der Abstand war nur mal so eine Annahme weil ich gerade ein 20cm
Lineal vor mir liegen hatte und ich mit dem Bleistift auf einem
karierten Papier herumgekritzelt habe.

Mal angenommen, man kommt mit 200 oder 300 LEDs aus - wie würde die
Schaltung dazu aussehen.

Bin auch nicht böse, wenn wir hier in diesem Thread nicht auf einen
gemeinsamen Nenner kommen, was den Abstand der Leuchtdioden betrifft
;o))
Autor: Fly (Gast)
Datum: 23.01.2007 16:15

Okay :)
Dan musst du dir die Frage stellen nach der Anzahl von Kanälen die du
willst.
Bei nur einem Kanal sehe ich kein Problem, wieviele möglich sind weiss
ich nicht genau.
Ich geh mal von einem Kanal aus: Einfach, du kannst alle r, alle g und
alle b Leitungen zusammenfassen und musst nur diese 3 Leitungen steuern.
Ich würde dir allerdings empfehlen je nach Höhe deiner Betriebsspannung
so viele Leds wie möglich in Reihe zu schalten (Verlustleistung und
Anzahl der Vorwiderstände wird kleiner).

Wenn du mehrere Kanäle willst, wird es schwieriger, je nachdem was du
dir wieder vorstellst. Am besten du suchst mal im uC + elektronik Forum
nach Begriffen wie LED PWM MATRIX. Es hat viele Threats dazu.
Autor: Fly (Gast)
Datum: 23.01.2007 16:18

Nachtrag: Such mal bei Google nach Led Cube. Da kannst du dir einiges
abschauen. Übrigens wenn du eine gute Quelle für günstige und brauchbare
leds gefunden hast --> Bitte mitteilen :)
Autor: Christian R. (mrrotzi)
Datum: 23.01.2007 16:21

Danke!
Ich geh mal auf die Suche!

btw: ich würde sowieso nur einen Kanal machen. Denke, das muss reichen.
Ausserdem, wenn wirklich manche LEDs aus der Reihe fallen (bezüglich
unterschiedlicher Leuchtstärke oder so) dann schaut das vielleicht
garnicht so schlecht aus?!

Mal sehen!
Autor: Dirk (Gast)
Datum: 23.01.2007 16:37

>Übrigens wenn du eine gute Quelle für günstige und brauchbare leds
>gefunden hast

Die beiden Sachen passen so gut zusammen wie Katze und Hund.
Autor: Fly (Gast)
Datum: 24.01.2007 11:04

Ich träume von einer Kabine mit folgenden Eigenschaften.

- Grösse 3 x 2 x 2 m
- Schalldicht
- Auf allen Seiten rgb Leds
- Sofa oder Sessel drin
- Soundsystem mit Ipod
- Wasserpfeife
- Abzug für den Rauch und Sauerstoff rein
- Fernbedienung um den rgb Controller zu bedienen
  - Farbton und Helligkeit wählbar
  - Verschiedene Auto rgb Programme wählbar (sanfter Farbwechsel)

Da würde ich mich eine Weile nach einem schlechten Tag verziehen...
Autor: Christian R. (mrrotzi)
Datum: 24.01.2007 12:09

ganz recht!

Schalldicht ist wichtig um einen eventuellen Schreikrampf für mich zu
behalten!
Autor: Fly (Gast)
Datum: 24.01.2007 12:13

Hehe jooa, doch Schreikrämpfe hab ich nicht. Ich möchte eher Ruhe von
meiner Umwelt :)
Autor: Fabian Bonner (fabianbonner)
Datum: 29.01.2007 07:29

@edi_2k
@emil

...matt, transluzente Selbstklebefolien mit diffusiver Eigenschaft von
Oracal und 3m können (ab 0,5m²) bei mir bezogen werden.

Ebenfalls kann ich euch Acrylglas ab 2mm Stärke anbieten, aus welchem
beliebige Formen herausgeschnitten werden können. Auch Gravur ist
möglich.

Einfach mal anfragen: fabianbonner@kommit.biz

Bitte auch mein derzeit aktuelles Anliegen (Auftragsarbeit) beachten:
Beitrag "Auftragsarbeit - RGB-LED-Lauflicht"
Autor: Paul (Gast)
Datum: 14.03.2007 19:48

Hallo Forum.

Ich habe den Code von Benedikt K. versucht nach Codevision AVR zu
portieren, leider ohne Erfolg. Mit dem Code von Fly hat es gefunzt. Aber
jetzt leuchten die LED's eher statisch abwechselnd in den drei
Grundfarben. Wo liegt mein Fehler? Den umgeschriebenen Code für
CodeVision habe ich mit angehängt.
Autor: Paul (Gast)
Datum: 14.03.2007 19:52

Ja ich weiß "Längeren Sourcecode nicht im Text einfügen, sondern als
Dateianhang" aber irgendwie bekomme ich den hier auch nicht rein. :-(

#include <tiny45.h>
#include <io.h>
#include <stdlib.h>

#define     Ledport             PORTB    // RGB Led Port
#define     DDR_Ledport         DDRB

#define     R_PIN               2      // R Ausgang
#define     G_PIN               1      // G
#define     B_PIN               0      // B

#define      INVERT        1      // Ausgang Low aktiv ?
#define     Time                1

unsigned char Red, Green, Blue;             // PWM Register
unsigned char Flags;

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
    static unsigned char PWM_cnt;

if (INVERT==1) {
  if (PWM_cnt <Red)
    Ledport &=~(1 << R_PIN);
  else
    Ledport |= (1 << R_PIN);

  if (PWM_cnt <Green)
    Ledport &=~(1 << G_PIN);
  else
    Ledport |= (1 << G_PIN);

  if (PWM_cnt <Blue)
    Ledport &=~(1 << B_PIN);
  else
    Ledport |= (1 << B_PIN);
} else {
  if (PWM_cnt <Red)
    Ledport |= (1 << R_PIN);
  else
    Ledport &=~(1 << R_PIN);

  if (PWM_cnt <Green)
    Ledport |= (1 << G_PIN);
  else
    Ledport &=~(1 << G_PIN);

  if (PWM_cnt <Blue)
    Ledport |= (1 << B_PIN);
  else
    Ledport &=~(1 << B_PIN);
}
  PWM_cnt++;
  if (PWM_cnt==0)
    Flags|=Time;
}

//HSV Function
hsv_to_rgb (unsigned char h, unsigned char s, unsigned char v) {
unsigned char r, g, b, i, f;
unsigned int p, q, t;

  if( s == 0 ) {
      r = g = b = v;
  } else {
      i=h/43;
    f=h%43;
    p = (v * (255 - s))/256;
    q = (v * ((10710 - (s * f))/42))/256;
    t = (v * ((10710 - (s * (42 - f)))/42))/256;

    switch( i ) {
        case 0:
        r = v; g = t; b = p; break;
      case 1:
        r = q; g = v; b = p; break;
      case 2:
        r = p; g = v; b = t; break;
      case 3:
        r = p; g = q; b = v; break;
      case 4:
        r = t; g = p; b = v; break;
      case 5:
         r = v; g = p; b = q; break;
    }
  }
  #asm("cli");                        // Kein Interrupt beim übernehmen
der neuen Werte!
  Red=r; Green=g; Blue=b;
  #asm("sei");
}

void main(void) {
    unsigned char H,S,V;

    DDRB=0x07;

    H = 0;
    S = 255;
    V = 255;
    hsv_to_rgb(H,S,V);                  // HSV Startwerte: rot, volle
Helligkeit

    TCCR0B=0x01;
    TIMSK = 0x02;                       // T0 Starten, Overflow
Interrupt f/256
    #asm("sei");

while (1) {
    if (Flags&Time) {
        Flags&=~Time;
        H++;
        hsv_to_rgb(H,S,V);
    }
};
}
Autor: Dirk (Gast)
Datum: 15.03.2007 07:47

"Ja ich weiß "Längeren Sourcecode nicht im Text einfügen, sondern als
Dateianhang" aber irgendwie bekomme ich den hier auch nicht rein. :-("


Wenn Du zu doof bist, dann lass den Scheiß.
Autor: Paul (Gast)
Datum: 15.03.2007 22:00

Hallo und danke für deine Antwort. Das hilft mir weiter.

grüße
Autor: Fly (Gast)
Datum: 15.03.2007 22:42

Ich habe mir den Code mal angeschaut. Auf den ersten blick erkenne ich
keine Fehler.
Du hast INVERT als 1 definiert. Somit sind die Ausgangszustände
invertiert. Diese Möglichkeit ist ein Feature von Benedikt. Wie sind
deine Leds angeschlossen?
Bei meniner Hardware und dem Code sind sie highaktiv. Ich müsste das
INVERT also als 0 definieren damit es funktioniert.
Autor: Paul (Gast)
Datum: 17.03.2007 08:21

Hallo

Ja das ist richtig. Das ist bei meiner Hardware natürlich genau so.
Leider bringt die Änderung keinen Erfolg. Es gibt auch keine einzelnen
RGB-Farben. Es werden bei H=0,12,240 immer Mischfarben angezeigt.
Autor: Fly (Gast)
Datum: 17.03.2007 15:15

Wie ist jetzt genau deine Hardware, so wie in meiner Doku beschrieben
oder so wie Benedikts, also invertiert?
Was meinst du mit H=0,12,240 ?
Autor: Paul (Gast)
Datum: 18.03.2007 22:37

Meine Hardware sieht wie folgt aus.
Die Ausgänge des Controllers werden über npn transistoren geschaltet.
Demnach sollte also auch eine 0 bei invert stehen.

Mit H=0,120,240 Grad meine ich die einzelnen Grundfarben Rot, Grün und
Blau.

Übrigens Funktioniert die selbe Hardware mit deinem Code Fly, wunderbar.
Autor: Fabian B. (fabs)
Datum: 18.03.2007 23:40

@Fly
in deiner Anleitung zum Abgleichen der Vorwiderstände steht, dass am
Ende bei H=0 S=1 V=1 (oder nach Benedikts Int-Umsetzung H=0 S=255 V=255
ein möglichst gutes Weiss kommen soll... das ist doch wohl so nicht
korrekt oder?
H=0 ist doch zwangsläufig reines rot....

Gruß
Fabian
Autor: Fly (Gast)
Datum: 19.03.2007 11:07

Ja, natürlich mit H=0 S=1 V=1 ergibt sich rot, sry ein Fehler in der
Doku!
Dann nimmst halt meinen Code :)
http://www.csgnetwork.com/csgcolorsel4.html
hier kannst du probieren. Weiss ergibt natürlich H=0 S=0 V=100.
Autor: Carsten H. (carsten29)
Datum: 30.03.2007 23:47

Gibt es auch Irgendwo den Schaltplan zu dem Code ?
Autor: Ralf (Gast)
Datum: 25.07.2007 23:37

Da hier ein paar Mal gefragt worden ist nach RGB-LED-Lieferanten, ich
hab mal gesucht und das hier gefunden:

http://www.leds.de/index.php?language=de&cat=c...

Die unteren LEDs sind echte RGBs, die oberen wechseln die Farbe
selbstständig.

Ich weiss nicht, ob die Teile was taugen, noch habe ich da bis jetzt
welche gekauft. Der Preis sieht aus meiner Sicht gut aus. Dachte nur,
dass das vielleicht für jemanden interessant sein könnte...

Ralf
Autor: fabs (Gast)
Datum: 26.07.2007 16:50

Die Teile sind "okay". die Farbmischung ist aber nicht sooo berauschend.
Die "Leuchtflecken" divergieren recht stark. Ich hatte mir mal LEDs aus
Hongkong vom Hersteller besorgt (über ebay) und die waren deutlich
besser (und deutlich günstiger).

Gruß
Fabian
Autor: Max (Gast)
Datum: 09.12.2007 19:17

Hallo! :)

Ich hab mir jetzt mal eine Schaltung gebaut und es ausprobiert. Aber
leider kam ich nicht auf das Ergebnis, was du hast. Wenn ich die LED's
anmachen sieht man jede Farbe einzeln. Liegt das daran, dass es eine RGB
LED Klar ist??

So dann habe ich glaube ich noch ein Problem mit der Frequenz. Wenn ich
den Code auf meinem STK500 teste sieht man die onboard LED blinken. Soll
aber nicht so sein oder!?

LG Max
Autor: Fly (Gast)
Datum: 09.12.2007 19:59

Gut möglich, meine Leds sind diffus.
Dass die Boardleds leuchten, liegt wohl daran, dass diese noch parallel
angehängt sind an den IO's des uC. Du kannst das Portkabel der Leds
abziehen und sie sind aus :)
Autor: Max (Gast)
Datum: 10.12.2007 00:24

@ Fly

ne jetzt hast du mich glaube ich falsch verstanden. Die sollen ja
Leuchten. ;-) Aber sie blinken, und das sollen sie ja nicht oder?! Bzw.
das Blinken soll man nicht sehen. Sonder es soll so eine Art Dimmen
zusehen sein, nicht?
Autor: Fabian B. (fabs)
Datum: 10.12.2007 00:26

Dann ist deine PWM Frequenz zu langsam.
bei den 256 Stufen und 8MHz internem Takt musste den Timer ohne
Prescaler laufen lassen...

hatte ich auch...

@Fly: wo haste die diffusen RBG-Leds her?

Gruß
Fabian
Autor: Max (Gast)
Datum: 10.12.2007 01:42

Ich hab den TCCR0=1, sprich das Ding läuft bei einer Frequenz von 8Mhz.
Und bei 256 dann die entsprechende. Komisch... Irgendwas läuft da ganz
krum. Aber es sollte doch kein unterschied sein, ob jetzt mega8 (ich)
oder dem mega16?!

LG Max
Autor: Fabian B. (fabs)
Datum: 10.12.2007 08:06

nein. bei mir läuft es auf nem tiny13 mit den internen 9,6MHz
einwandfrei.

Poste doch mal deinen Schaltplan/Code

Gruß
Fabian
Autor: Fly (Gast)
Datum: 10.12.2007 14:34

Die Leds habe ich einmal bei ricardo.ch bestellt
Autor: Max (Gast)
Datum: 17.12.2007 22:48
Dateianhang: MOV00154.3GP (98,2 KB, 153 Downloads)

So ich hab anbei mal ein Video wie es auf meinem STK500 aussieht. So
sollte es doch sicherlich nicht sein oder?

Ich hab einfach den Code wie er ist genommen und draufgespielt...

LG Max
Autor: kolbaca (Gast)
Datum: 17.12.2007 22:52

Wo mit sehe ich mir das denn an ?

Kolbaca der bebutterte
Autor: Max (Gast)
Datum: 17.12.2007 23:15

quicktime! :)

Also auf dem Video sieht man das blinken nicht sooo stark. Ist in
wirklichkeit noch was stärker...
Autor: Fabian B. (fabs)
Datum: 17.12.2007 23:20

Die drei Leds stellen deine Farben dar, richtig?

Wie ich oben schon schrieb:
>Dann ist deine PWM Frequenz zu langsam.
>bei den 256 Stufen und 8MHz internem Takt musste den Timer ohne
>Prescaler laufen lassen...

/Edit: Poste doch mal deinen Code bevor wir hier rumraten ;-)

Gruß
Fabian
Autor: Max (Gast)
Datum: 17.12.2007 23:36

Ich hab einfach den Code vom Benedikt K. genommen.

http://www.mikrocontroller.net/attachment/highlight/18560
Autor: Fabian B. (fabs)
Datum: 18.12.2007 07:31

Kann es sein, dass du die CLKOPT/CLKDIV Fuse gesetzt hast und das Teil
in Wirklichkeit nur mit CLK/8 Läuft? Ich kenn den Mega8 jetzt nicht
auswendig...hat der die auch? Oder probiers mal mit nem ext 16MHz Quarz.
Wenn sich dan