So, es gibt hier noch mal ein Update auf dem Weg zum "perfekten Fader"
Ein Problem war ja, dass die LEDs "zu schnell angehen", und sich dann von "halb" bis "voll" nicht mehr wirklich viel ändert - das liegt an der logarythmischen Empfindlichkeit des Auges. Im unten verlinkten Video noch mal am Anfang zum Vergleich enthalten.
Um das auszugleichen, wurde nun in die letzte SW-Version noch eine Dimmerkurve eingebaut.
Ausserdem haben ein paar Leute, die das Ding in echt gesehen haben, die "schwankende Helligkeit" bemängelt - ist ja auch klar: bei gelb, cyan, magenta sind immer 2 LEDs an, bei Rot, Grün, Blau jeweils nur eine, dadurch sind die dunkler.
Ich habe mir meine billigen Baumarkt-Fader-Kugeln angesehen, und festgestellt: da geht die eine Farbe (z.B. Rot) schon aus, während die nächste (z.B. grün) angeht - Gelb ist hier dann z.B. 1/2 Rot + 1/2 Grün, und damit nicht so übermäßig hell. Und diese Art sind eben viele Leute gewohnt, die so Baumarkt/Aldi/Lidl-Kugeln haben...
Diesen Fader habe ich deswegen auch noch eingebaut (Aktivierung durch DIP 8, wenn der Rainbow-Fader (Dip 7) läuft). Dadurch wird die SW leider noch "chaotischer" vom Aufbau her (Sprung von ner Subroutine in eine weitere), aber ist jetzt eh' das letzte Update...
Zur Unterscheidung (auch im
Video) heisst der neue Fader jetzt eben "RGB-Fader", und der Rot-Gelb-Grün-Cyan-Blau-Magenta-Rot-...-Fader heisst jetzt Rainbow-Fader...
Den Quelletxt gibt's wieder
zum download.
Zur Dimmerkurve: ich habe mir die von LedBob genannten Seiten mal angesehen, auf der Mikrocontroller-Seite war auch ne Dimmerkurve zu finden. Die kam mir nur etwas seltsam vor: halbe Helligkeit (unkorrigiert 12

war hier nur 16 - das kam mir etwas wenig vor... hab' die Kurve dann mal rein, war auch ein Fiasko - hier war es genau "andersrum falsch", erst hat sich beim Auffaden wenig getan, und am Schluß wurde es schlagartig hell...
ich habe mir dann mal die dort verlinkte
Stevenssche Potenzfunktion angesehen: in vereinfachter Form für das Helligkeitsempfinden:
Empfundene Reizstärke = Reizstärke (hoch) 0,33
Also umgekehrt: Reizstärke = Empfundene Reizstärke (hoch) 3,03 - Damit habe ich dann den Taschenrechener gefüttert (254 Werte per Hand!), und bin auf eine enstsprechende Dimmerkurve gekommen.
Die war leider auch nicht gerade ideal - siehe Video ("Dimmerkurve 0,33") - es ruckelt schon arg im unteren Bereich (wegen Rundungsfehlern und dadurch verursachten Sprüngen), und gelb, cyan, magenta gehen total unter, weil hier "halbe Helligkeit" immer noch viel zu dunkel (32) ist...
Also habe ich mal meinen vorher schon empirisch ermittelten Wert von 90 für die halbe Helligkeit genommen, und das auf ne entsprechende Hochzahl von 1,5 umgerechnet - da gab's auch wieder ein paar Sprünge durch Rundungsfehler, also habe ich noch ein paar Werte hin- und hergeschoben, um das etwas "auszubügeln" - das Ergebnis von insg. 3 Stunden Arbeit möchte ich Euch nicht vorenthalten:
[code:1]
.db 0, 0, 1, 1, 1, 1, 1, 2
.db 2, 2, 2, 3, 3, 3, 4, 4
.db 4, 5, 5, 5, 6, 6, 7, 7
.db 8, 8, 9, 9, 10, 10, 11, 11
.db 12, 12, 13, 13, 14, 14, 15, 15
.db 16, 16, 17, 17, 18, 18, 19, 19
.db 20, 20, 21, 21, 22, 22, 23, 23
.db 24, 24, 25, 25, 26, 27, 28, 29
.db 30, 30, 31, 32, 33, 34, 35, 36
.db 36, 37, 38, 39, 40, 41, 42, 43
.db 43, 44, 45, 46, 47, 48, 49, 50
.db 51, 52, 52, 53, 54, 55, 56, 57
.db 58, 59, 60, 61, 62, 63, 64, 65
.db 66, 67, 68, 69, 70, 71, 72, 73
.db 74, 75, 76, 77, 78, 79, 80, 81
.db 82, 83, 84, 85, 86, 88, 89, 90
.db 91, 92, 93, 94, 95, 96, 97, 98
.db 99, 100, 102, 103, 104, 105, 106, 107
.db 108, 109, 110, 112, 113, 114, 115, 116
.db 117, 119, 120, 121, 122, 123, 124, 126
.db 127, 128, 129, 130, 132, 133, 134, 135
.db 136, 138, 139, 140, 141, 142, 144, 145
.db 146, 147, 149, 150, 151, 152, 154, 155
.db 156, 158, 159, 160, 161, 162, 164, 165
.db 167, 168, 169, 171, 172, 173, 174, 176
.db 177, 178, 180, 181, 182, 184, 185, 187
.db 188, 189, 191, 192, 193, 195, 196, 197
.db 199, 200, 202, 203, 204, 206, 207, 208
.db 210, 211, 213, 214, 216, 217, 218, 220
.db 221, 223, 224, 226, 227, 228, 230, 231
.db 233, 234, 236, 237, 239, 240, 242, 243
.db 245, 246, 248, 249, 251, 252, 254, 255
[/code:1]
Das funktioniert schon recht gut, siehe Video ("Dimmerkurve 0,67") - durch das "Rumschieben" hat die Kurve aber nen leichten Knick bekommen, bei ca. 1/3 ruckt der Verlauf mal etwas... und im untersten Bereich (erste 5-6 Werte) wirkt er *etwas* abgestuft... das leichte Flackern kommt wieder von der niedrigen PWM-Frequenz, in echt geht das geschmeidiger...
Und man sieht hier ganz deutlich, dass eine PWM-Auflösung von 8 Bit für 256 Werte mit Dimmerkurve nicht reicht - daher kommt am Anfang so oft 1 und 2 und 3 usw. - und auch die "LED auf kleinster Stufe an" ist eben noch zu hell im Vergleich zu 12 Bit...
Fazit: bei meinem 30-Kanal-DMX-Dimmer werde ich Hardware-PWM mit 12 Bit und höherer Frequenz einbauen, die einfachen Sachen bekommen keine Dimmerkurve, ist immer noch besser als ruckeln und stufen... käufliche 8-Bit-Geräte haben sowas ja auch nicht (Dimmerkurve meine ich jetzt)
Dieses Fader-Projekt ist hiermit abgeschlossen, die nächste Version wird - wie schon gesagt - SW-mäßig komplett anders aufgebaut...
Anregungen, Fragen und (fundierte, konstruktive) Kritik sind natürlich trotzdem willkommen!