Gibt es eine Formel zu ausrechnen der Tabelle wo ich einfach den Max Wert ändere?
Ich habe die Tabelle anhand der Formel hier erstellt, dann noch etwas "gerundet"...
Du musst halt erst mal schauen, welche max.-Helligkeiten Du für die jeweiligen LEDs brauchst, damit weiß rauskommt, und dann für den jeweiligen LED-Typ die Tabelle neu berechnen.
So im Prinzip - das ist aber massig Arbeit... wenn man davon ausgeht, dass die LEDs nur insgesamt zu dunkel sind, dann kann man das auch nachher ausgleichen, indem man die zu hellen LEDs einfach runterdimmt, bis es insgesamt wieder passt...
dazu hier ein kleiner Schnipsel, damit nach der Gammakorrektur die zu hellen LEDs noch mal dunkler machen:
; ================================================================================================
; Wert in temp0 mit temp1 verrechnen - Ergebnis wieder in temp0
; ------------------------------------------------------------------------------------------------
SUB_Dimmer:
push temp2
mul temp0, temp1 ; temp1 mit zu dimmendem Wert multiplizieren
clr temp2
add Mathe_L, temp0 ; noch mal dazu addieren, wegen Bereich 1-256
adc Mathe_H, temp2 ; in 16 Bit
mov temp0, Mathe_H ; durch 256 dividieren
pop temp2
ret
; ================================================================================================
Alles anzeigen
halt die Register anpassen, weil Du den zu dimmenden Wert ja in temp1 hast, nicht in temp 0 - "Mathe_L" und Mathe_H sind die Register 0 und 1, da legt der AVR das Ergebnis der HW-Multiplikation ab...
Problem dabei: die so angepasste Matrix ist dann halt insgesamt dunkler als eine nicht korrigierte - damit's wieder gleichmäßig wird, müsstest Du Dich also an den dunkelsten LEDs orientieren, und alle anderen (auch bei den Panels, die schon weiß sind) runter dimmen bis es passt - da wär's wohl besser gewesen, gleich gut selektierte LEDs zu nehmen...
Jetzt muss ich nur noch das mit dem Autoconfig einbauen kann man das nicht einfacher gestallten als es in den 27 Channel Dimmer ist?
Ich hatte mir das damals angesehen, ich denke, recht viel einfacher geht es nicht, versuch' doch mal, das von dort bei Dir zu integrieren...
so im Prinzip läuft das schon: Wenn der Autoconfig-Modus an ist, dann ignoriert die Routine die momentane Startadresse, fängt einfach ab Kanal 1 an, Bytes zu analysieren - dazu läuft ein Zähler mit, der die Nummer des empfangenen Bytes zählt - ist das Byte größer 128, ist der Startwert gefunden, der Wert des Zählers wird dann als DMX-Startadresse gespeichert...
das Ganze ist wohl einfacher, wenn Du statt in der Routine zu pfriemeln, die gleich in zwei getrennte Empfangsroutinen aufteilst - also ganz am Anfang erst mal checken, ist Autoconfig an, wenn nicht, dann normaler DMX-Empfang, wenn ja, dann die Routine zum Kanal finden, also warten auf Break, Startbyte, hier Zähler auf 0 (ein 16-Bit-Register nehmen), und dann bei jedem empfangenen Byte den Zähler erhöhen, wenn das Byte größer 128 ist, Zähler als Startadresse speichern und Autoconfig verlassen...
André: Sauber! - langsam wird mir das etwas unheimlich... wann kann ich das Teil mal im Olympiastadion bewundern...?