Wurkkos Taschenlampen

Skilhunt Taschenlampen

Wie kompiliert man Anduril für eine neue Lampe?

toddl1985

Stammgast
26 November 2017
50
11
8
Hallo Leute,
ich habe ein paar Fragen zu Anduril. Es geht aber nicht um die normale Bedienung, sondern wie man die Anduril-Quellen anpassen kann und wie man so etwas danach sinnvoll kompilieren kann.

Ich habe mir das Anduril-Paket von Toykeeper heruntergeladen und auch einen Kompiler installiert. Das kompilieren selbst funktioniert auch.

Jetzt zu meinen Fragen:
Soweit ich das verstanden habe, gibt es für jede Lampe einmal eine Art Hardware-Definition (mit Namen wie "hwdef-FW3A.h"), in welcher die Pinzuordnung des Prozessors festgelegt wird und solche Dinge, also die reine Hardware des Treibers, und es gibt dann noch eine Konfigurationsdatei, welche die Abstufungen des Rampings und solche Dinge festlegen (z.B. "cfg-fw3a.h").
Wenn ich jetzt eine Lampe, die bisher noch nicht im Anduril-Paket enhalten ist, neu anlegen möchte, dann muss ich erst einmal eine Hardware-Definitionsdatei erstellen, z.B. indem ich eine andere Datei als Vorlage nehme, richtig?

Aber wie finde heraus, welche Ramping-Abstufungen in der zweiten Konfigurationsdatei zur LED in meiner Lampe passen? Wie bekommen ich die heraus?
Oder ist das so eine Ausprobier-Sache? Man probiert so lange verschiedene Zahlen aus, bis das Ergebnis passt?

lg, Thorsten
 

uselessuser

Flashaholic**
11 März 2018
1.240
729
113
Schweiz
Wenn ich jetzt eine Lampe, die bisher noch nicht im Anduril-Paket enhalten ist, neu anlegen möchte, dann muss ich erst einmal eine Hardware-Definitionsdatei erstellen, z.B. indem ich eine andere Datei als Vorlage nehme, richtig?
Das ist eine Möglichkeit, ja. Du kannst aber natürlich auch einfach eine vorhandene Datei für eine andere, passende Lampe verwenden.
Aber wie finde heraus, welche Ramping-Abstufungen in der zweiten Konfigurationsdatei zur LED in meiner Lampe passen?
Primär musst du erstmal wissen, wie viele Kanäle dein Treiber hat. Ein FET+1 hat zB zwei.
Entsprechend musst du in dem Fall zwei Arrays definieren. Orientier dich dabei am Besten an bestehenden Dateien. Im Prinzip musst du nur darauf achten, dass die Zahlen immer nur höher werden und der Gesamtstrom sinnvoll zunimmt.

Die Werte sind zwischen 0 für "aus" und 255 für "volles Rohr", und wie viel Licht damit jeweils aus der LED kommt kannst du zB dem Datasheet oder Lumen-vs-Ampere Tests entnehmen.

Es gibt aber auch noch irgendwo ein Skript das dir sinnvolle Werte ausgibt. Da kann sicher jemand anderes aushelfen, ich bin gerade nicht am Rechner.
 
  • Danke
Reaktionen: toddl1985

steidlmick

Flashaholic***
15 August 2012
6.331
5.404
113
Bielefeld, NRW
Wenn ich jetzt eine Lampe, die bisher noch nicht im Anduril-Paket enhalten ist, neu anlegen möchte, dann muss ich erst einmal eine Hardware-Definitionsdatei erstellen, z.B. indem ich eine andere Datei als Vorlage nehme, richtig?
Ja, so würde ich auch vorgehen. Je nach Lampe (geht's um ein bestimmtes Modell bei dir?) ist das unterschiedlich aufwändig, aber Lampen mit Attiny85 sind sich sehr ähnlich.
Im Zweifel müsste man da nochmal die Leitungsbahnen verfolgen.
Aber wie finde heraus, welche Ramping-Abstufungen in der zweiten Konfigurationsdatei zur LED in meiner Lampe passen? Wie bekommen ich die heraus?
Oder ist das so eine Ausprobier-Sache? Man probiert so lange verschiedene Zahlen aus, bis das Ergebnis passt?
Ich glaube da gibt es ein Python-Skript, mit dessen Hilfe man die Abstufungen ausrechnen lassen kann.
So wie ich dich verstehe geht es dir darum, dass man einen linearen Helligkeitsverlauf hat, ohne sichtbare Sprünge und exponentielles Verhalten oder so?

Ich vermute, dass man trotzdem auch noch viel probieren muss, ob die errechneten Werte zur LED passen, ganz automatisch wird das wohl eher nicht sein.

Möchtest du denn eine ganz bestimmte Lampe hinzufügen? Falls ja gibt es vielleicht schon längst entsprechende Dateien, die von anderen erstellt wurden.
 
  • Danke
Reaktionen: toddl1985

SammysHP

Flashaholic**
6 Oktober 2019
2.605
3.458
113
Celle
www.sammyshp.de
Wenn ich jetzt eine Lampe, die bisher noch nicht im Anduril-Paket enhalten ist, neu anlegen möchte, dann muss ich erst einmal eine Hardware-Definitionsdatei erstellen, z.B. indem ich eine andere Datei als Vorlage nehme, richtig?
Genau. Eventuell reicht es schon, eine andere Datei zu kopieren. Manche Lampen wie z.B. die FT03 sind aber leicht anders aufgebaut und brauchen zur Zeit noch Anpassungen an anderen Stellen im Code.

Aber wie finde heraus, welche Ramping-Abstufungen in der zweiten Konfigurationsdatei zur LED in meiner Lampe passen? Wie bekommen ich die heraus?
Oder ist das so eine Ausprobier-Sache? Man probiert so lange verschiedene Zahlen aus, bis das Ergebnis passt?
Dabei hilft dir das Python-Script steps.py aus dem Anduril-Verzeichnis. Das einfach in der Konsole starten und es fragt dich nach den Details (wie viele Kanäle, welche Kurvenform usw.). Man kann auch alle Parameter direkt beim Aufruf angeben. Meistens Stelle ich mir das Ergebnis anschließend (z.B. in Excel) als Diagramm dar. Bei der Kurvenform hilft aber nur ausprobieren. Manchmal muss man auch mit den Übergängen zwischen den Kanälen manuell etwas rumspielen.
Für den Anfang kannst du dir aber auch einfach die Werte eine ähnlichen Lampe kopieren.
 
  • Danke
Reaktionen: ASP_ED

toddl1985

Stammgast
26 November 2017
50
11
8
Danke für die bisherigen Antworten.
Ich glaube da gibt es ein Python-Skript, mit dessen Hilfe man die Abstufungen ausrechnen lassen kann.
So wie ich dich verstehe geht es dir darum, dass man einen linearen Helligkeitsverlauf hat, ohne sichtbare Sprünge und exponentielles Verhalten oder so?
Jepp, ich möchte eine schöne lineare Helligkeitsrampe, keine Sprünge und auch nicht exponentielles Verhalten.
Welches Python-Script meinst du genau? Weiß du noch, wie das heißt?
Möchtest du denn eine ganz bestimmte Lampe hinzufügen? Falls ja gibt es vielleicht schon längst entsprechende Dateien, die von anderen erstellt wurden.
Es geht um mehrere Lampen, meine Testlampe ist aber aktuell eine Sofirn SP36. Ich möchte es aber ganz allgemein verstehen und bei jeder Lampe anwenden können.

Es sollen schon alle meine Lampen mit Anduril und auch zwei mit Narsil auf die gleiche Anduril-Version gebracht werden, mit identischen Funktionen und ohne das nervige Gedöns (Gewitter-Modus, Strobe usw.).
Es stört mich, dass die kommerziellen Lampen uneinheitlich funktionieren, Reset ist so ein Thema oder auch 10-Klick-Temperaturmenü.
Dabei hilft dir das Python-Script steps.py aus dem Anduril-Verzeichnis. Das einfach in der Konsole starten und es fragt dich nach den Details (wie viele Kanäle, welche Kurvenform usw.).
Das klappt bei mir nicht, es hagelt nur Fehlermeldungen. Ich habe inzwischen vier verschiedene Anduril-Versionen und alle scheinen das gleiche Problem bei diesem Script zu haben.

Ich habe aber herausgehört, dass es ohne viel händische Anpassung sowieso nichts wird.

Wenn jemand noch mehr Tipps und Tricks hat wäre ich dankbar.

lg, Thorsten
 

SammysHP

Flashaholic**
6 Oktober 2019
2.605
3.458
113
Celle
www.sammyshp.de
Jepp, ich möchte eine schöne lineare Helligkeitsrampe, keine Sprünge und auch nicht exponentielles Verhalten.
Bist du dir sicher? Damit hättest du am Anfang ein bisschen dunkel und der Rest der Rampe wäre hell.

Das klappt bei mir nicht, es hagelt nur Fehlermeldungen. Ich habe inzwischen vier verschiedene Anduril-Versionen und alle scheinen das gleiche Problem bei diesem Script zu haben.
Da du uns die Fehlermeldungen nicht verrätst, können wir dir auch nicht helfen. Bei mir läuft es problemlos.

Ich habe aber herausgehört, dass es ohne viel händische Anpassung sowieso nichts wird.
Doch, das wird was. Die Anpassungen sind nur dazu, es perfekt zu machen. Schau dir einfach ein paar cfg-Dateien an, da stehen oftmals auch die Parameter für steps.py drin (wobei das Script inzwischen nicht mehr direkt mit diesen Parametern aufgerufen werden kann, da sich dort ein bisschen was geändert hat).
 
  • Danke
Reaktionen: ASP_ED

steidlmick

Flashaholic***
15 August 2012
6.331
5.404
113
Bielefeld, NRW
Jepp, ich möchte eine schöne lineare Helligkeitsrampe, keine Sprünge und auch nicht exponentielles Verhalten.
Bezüglich des sichtbaren Verlaufs? Oder beziehst du dich auf die Zahlenwerte?
Welches Python-Script meinst du genau? Weiß du noch, wie das heißt?
Da muss ich bei Gelegenheit mal nachsehen, irgendwo im bin-Ordner.

Edit: Gefunden, mit \fsm\bin\level_calc.py habe ich schon mal an so etwas herumgespielt, aber man muss trotzdem gewisse Werte angeben, ganz automatisch ging das nicht.
Es stört mich, dass die kommerziellen Lampen uneinheitlich funktionieren, Reset ist so ein Thema oder auch 10-Klick-Temperaturmenü.
Das kann ich nachvollziehen, mich stört das auch ziemlich.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: toddl1985

GorgTech

Flashaholic
1 Juli 2019
245
324
63
Nürnberg
Zum Thema Kompilieren, meine Erfahrungen mit Fehlermeldungen durfte ich auch noch vor Jahren machen (Android Kernel Entwicklung) wenn man nicht die richtigen Toolchains in der benötigten Version nutzt.

Mich reizt es zugegebenermaßen auch eine Taschenlampe zu flashen aber was passiert wenn wieder eine neue Anduril oder Narsilm Version erscheint? Erneut die Lampe knacken um ein Update zu flashen?

Ich glaube, es wäre zumindest für mich gesünder wenn ich einfach die Lampen so nutze wie vom Hersteller vorgesehen bevor ich am Ende noch weitere Zwangsstörungen entwickle ;)
 

SammysHP

Flashaholic**
6 Oktober 2019
2.605
3.458
113
Celle
www.sammyshp.de
Da muss ich bei Gelegenheit mal nachsehen, irgendwo im bin-Ordner.
Upps, da hatte ich was verwechselt. steps.py berechnet die Level, die Anduril im stepped ramping wählt. Richtig ist level_calc.py im bin-Ordner. Sorry für die Verwirrung.

Mich reizt es zugegebenermaßen auch eine Taschenlampe zu flashen aber was passiert wenn wieder eine neue Anduril oder Narsilm Version erscheint? Erneut die Lampe knacken um ein Update zu flashen?
Bei manchen ist es ja recht einfach (vor allem bei Lampen mit extra Kontakten zum Flashen). Aber es stimmt schon, das kann nervig sein. Manchmal sind die Kabel lang genug und man kann den Treiber (nach Lösen des Klebers) weit genug drehen. Wenn man die Kabel aber jedes Mal vom MCPCB ablöten muss, macht es definitiv keinen Spaß mehr. Solche Lampen (wie die FW3A) werden bei mir aber auch entsprechend selten genutzt.
 

toddl1985

Stammgast
26 November 2017
50
11
8
Bezüglich des sichtbaren Verlaufs? Oder beziehst du dich auf die Zahlenwerte?
Ich möchte, das die Helligkeit für mich sichtbar linear verändert wird. Die Zahlen sind mir egal, es soll linear aussehen.
Edit: Gefunden, mit \fsm\bin\level_calc.py habe ich schon mal an so etwas herumgespielt, aber man muss trotzdem gewisse Werte angeben, ganz automatisch ging das nicht.
Alles klar, ich danke dir, das werde ich mir mal genauer ansehen.
 

toddl1985

Stammgast
26 November 2017
50
11
8
Nochmal danke an alle für den bisherigen Input.

Ich habe viel mit "level_calc.py" herumgespielt und habe jetzt noch mehr offene Fragen:

1. Was genau bewirkt die erste Option "cube, square, fifth, seventh, ninth, log, N.NN"?
Es scheint um eine Quadrat-, Kubik- oder sonstige Wurzel zu gehen und wie sich das auf die Rampenform auswirkt. Aber wie genau? Gibt es dafür Empfehlungen?

2. Anduril taktet den Prozessor in den untersten Stufen nur noch halb oder viertel so schnell wie normal, um Energie zu sparen, definiert durch "#define HALFSPEED_LEVEL" und "#define QUARTERSPEED_LEVEL".
Toykeeper hat mal irgendwo geschrieben, dass dadurch die Rampen in diesen Bereichen manuell angepasst werden müssen, damit man das nicht merkt.
Ich merke aktuell auch ein Flackern an den Übergängen.
Hat jemand Tipps zur Anpassung? Gibt es da bestimmte Tricks?

Gibt es noch allgemeine Tipps & Tricks, wie man seine Rampen optimal anpasst? Ich habe den Eindruck, dass meine Rampe in der unteren Hälfte ziemlich linear verläuft, aber zu den höheren Leistungen hin abflacht.
 

steidlmick

Flashaholic***
15 August 2012
6.331
5.404
113
Bielefeld, NRW
Es scheint um eine Quadrat-, Kubik- oder sonstige Wurzel zu gehen und wie sich das auf die Rampenform auswirkt. Aber wie genau? Gibt es dafür Empfehlungen?
Nehmen wir mal als Beispiel einen FET+1-Treiber.
Dazu kann ich beitragen, dass die von level_calc.py berechnete Kurve mit steigendem Wurzelexponenten im unteren Bereich (AMC7135) flacher wird (max. PWM beim AMC7135 wird später erreicht).
Das sind die Werte, die hinter #define PWM1_LEVELS stehen.
Der FET-Bereich wird hingegen steiler (#define PWM2_LEVELS).
Eine Kurve im Modus "Square" hat einen relativ steilen Anfang und wird in den hohen Helligkeitsstufen flacher.
Eine Kurve im Modus "Ninth" beginnt sehr flach (Helligkeit nimmt langsam zu) und steigt dafür bei den hohen Helligkeitsstufen stärker an.

Es kann hilfreich sein, wenn man unterschiedliche Kurvenabschnitte miteinander kombiniert, also das Skript mehrfach mit verschiedenen Startwerten laufen lässt und Teile passend miteinander verbindet, aber einen besonderen Trick wüsste ich nicht, es ist viel Handarbeit.

Bei komplexeren Treibern mit mehr Kanälen wird das natürlich komplizierter.
2. Anduril taktet den Prozessor in den untersten Stufen nur noch halb oder viertel so schnell wie normal, um Energie zu sparen, definiert durch "#define HALFSPEED_LEVEL" und "#define QUARTERSPEED_LEVEL".
Toykeeper hat mal irgendwo geschrieben, dass dadurch die Rampen in diesen Bereichen manuell angepasst werden müssen, damit man das nicht merkt.
Ich merke aktuell auch ein Flackern an den Übergängen.
Hat jemand Tipps zur Anpassung? Gibt es da bestimmte Tricks?
Damit habe ich mich nicht beschäftigt, dazu kann ich keine praktischen Tips abgeben.
Gibt es noch allgemeine Tipps & Tricks, wie man seine Rampen optimal anpasst? Ich habe den Eindruck, dass meine Rampe in der unteren Hälfte ziemlich linear verläuft, aber zu den höheren Leistungen hin abflacht.
Ich habe den Eindruck, dass du das Thema ggf. zu schablonenhaft betrachtest.

Jeder Einzelfall (Kombination aus Treiber, LED, Akku(s)) benötigt wohl eine individuelle Anpassung, da kommt man mit Paschalaussagen zwar zu funktionierenden Kurven, aber perfekt sind die nicht.
 

toddl1985

Stammgast
26 November 2017
50
11
8
Dazu kann ich beitragen, dass die von level_calc.py berechnete Kurve mit steigendem Wurzelexponenten im unteren Bereich (AMC7135) flacher wird (max. PWM beim AMC7135 wird später erreicht).
Das sind die Werte, die hinter #define PWM1_LEVELS stehen.
Der FET-Bereich wird hingegen steiler (#define PWM2_LEVELS).
Eine Kurve im Modus "Square" hat einen relativ steilen Anfang und wird in den hohen Helligkeitsstufen flacher.
Eine Kurve im Modus "Ninth" beginnt sehr flach (Helligkeit nimmt langsam zu) und steigt dafür bei den hohen Helligkeitsstufen stärker an.
Ich kann mir darunter nicht viel vorstellen.
Wäre dann so eine "square-Rampe" jetzt eher schlecht oder gut? Für mich hören sich die Beispiele alle nicht ideal an, ich möchte ja einen ideal linearen Helligkeitsanstieg.
 

steidlmick

Flashaholic***
15 August 2012
6.331
5.404
113
Bielefeld, NRW
Ist dir bekannt, dass die Zahlenwerte (Lumen) und die Helligkeitsempfindung eines Menschen nicht die gleichen Skalierungen verwenden?

Der Mensch empfindet Sinneseindrücke gemäß dem Weber-Fechner-Gesetz.
Dieses drückt aus, dass Sinneseindrücke (so auch die Helligkeitsempfindung) nicht linear mit dem physikalischen Zuwachs des Reizes (hier Lichtstrom im Lumen) in Verbindung stehen.
Der Mensch empfindet 2000 Lumen NICHT als doppelt so hell wie 1000 Lumen! Für den Menschen ist ~2000 Lumen ungefähr doppel so hell wie ~500 Lumen.
Möchte man im Vergleich "doppelt so hell wie 1000 Lumen", dann bedeutet das einen Lichtstrom von ca. 4000 Lumen!

Der physikalisch lineare Zuwachs des Lichtstroms wird also von den meisten Menschen nicht ebenso linear empfunden.
Daher muss man die Kurvenformen so anpassen, dass sie einen nicht-linearen Zuwachs der Lumen-Werte abbilden.

Hier mal demonstriert an einem (fiktiven) Beispiel.
Ich habe das Skript \fsm\bin\level_calc.py mit diesen Werten gefüttert: level_calc.py [TYP] 2 150 7135 1 0.50 230 FET 1 18 3500
Für [TYP] wurden dann jeweils square, cube, fifth, ninth und log eingesetzt.
Daraus habe ich dieses Diagramm abgeleitet:
Lumen vs. Leistungsstufe linear.png

Die Y-Achse zeigt linear aufgetragen die berechneten Lumen-Werten, die X-Achse entsprechend die 150 Leistungsstufen, die in Andúril möglich sind.

Auf den ersten Blick könnte man jetzt glauben, dass die Berechnungsmethode square (= Quadratwurzel) noch am ehesten einen linearen Verlauf ergibt.
VORSICHT!
Hier ist nicht berücksichtigt, dass der Mensch nicht linear empfindet!

Daher habe ich die gleichen Daten hier mit logarithmisch skalierter Y-Achse aufgetragen:
Lumen vs. Leistungsstufe logarithmisch.png

Diese logarithmische Auftragung der gleichen Werte bildet den menschlichen Sinneseindruck von der Helligkeit schon viel eher ab (aber nicht perfekt).

Wenn du also bisher z.B. eine Kurve hattest, die im Modus square (Quadratwurzel) oder cube (Kubikwurzel) berechnet wurde, dann zeigt diese Grafik, dass der Mensch einen solchen Helligkeitszuwachs sehr wahrscheinlich nicht als linear empfindet.
Gerade zu Beginn (noch geringe Helligkeit) ist der Zuwachs ausgeprägter als bei den hohen Leistungsstufen.

Nun darf man aber auch nicht ganz vereinfacht glauben, dass dann die Methode log die ideale Kurve ergeben müsste! Logarithmisch, ungefähr passend zum Helligkeitsempfinden des Menschen. So banal ist es leider nicht.

Vor allem bei geringen Helligkeiten empfinden wir Menschen die Quadratwurzel- oder Kubikwurzel-Kurve weniger nicht-linear wie es scheint, während umgekehrt in eine logarithmische Kurve bei den geringen Helligkeiten oft als zu langsam ansteigend empfunden wird.
Das Weber-Fechner-Gesetz gilt nämlich nicht bei niedrigen Reizstärken und ebenso nicht bei sehr hohen Reizstärken.
Daher muss man einen Kompromiss finden oder von mehreren Kurven die besten Abschnitte nehmen und diese sinnvoll kombinieren.
Das ist nicht trivial und erfordert viel Handarbeit, oftmals ist ein schwacher S-förmiger-Verlauf (liegendes S) recht gut passend.
 
Zuletzt bearbeitet:

SammysHP

Flashaholic**
6 Oktober 2019
2.605
3.458
113
Celle
www.sammyshp.de
Und daran sieht man auch gut die technischen Probleme bei geringer Helligkeit. Die Abstände von einer Stufe zur nächsten haben nämlich alle etwa den gleichen Abstand zueinander bezogen auf die tatsächliche Helligkeit. Das bedeutet, dass uns bei geringer Helligkeit der Abstand sehr groß erscheint, wir bei hoher Helligkeit aber keinen Unterschied mehr wahrnehmen. Damit das im Ramping gleichmäßig aussieht, müssen am Anfang Stufen mehrfach wiederholt werden, während am Ende große Sprünge auftreten.
 

light-wolff

Flashaholic***²
14 September 2011
16.351
12.425
113
im Süden
Der Mensch empfindet 2000 Lumen NICHT als doppelt so hell wie 1000 Lumen! Für den Menschen ist 2000 Lumen doppel so hell wie 500 Lumen.
Das liest man oft, aber mal ehrlich: was heißt überhaupt "empfindet doppelt so hell"?
Als Mensch kann man doch nicht im entferntesten sagen, ob etwas doppelt oder dreimal oder funfmmal so hell oder laut oder stinked ist wie etwas anderes. Nicht mal im direkten Vergleich. Man kann nur sagen, ob es gerade wahrnehmbar heller oder heller oder viel heller ist, aber nicht um wieviel als Zahl ausgedrückt (1,5 oder 2 oder 3 oder 5 Mal).

Man kann z.B. Licht stufenweise hochdimmmen, so dass die einzelnen Sprünge als jeweils gleich empfunden werden, und das dann in Lux/Lumen ausdrücken. Dabei wird tatsächlich etwas logarithmisches rauskommen (prozentualer Anstieg pro Stufe ist konstant). Aber ob die Sprünge als jeweils 1%, 5% oder 10% heller empfunden werden, ist reines Ratespiel, extrem subjektiv.
 

steidlmick

Flashaholic***
15 August 2012
6.331
5.404
113
Bielefeld, NRW
... aber mal ehrlich: was heißt überhaupt "empfindet doppelt so hell"?
Das heißt, dass eine statistische Mehrheit von Personen sich entsprechend geäußert hat.
Mehr kann man bei Sinnesempfindungen ohnehin nicht erwarten, solche sind ja eben nicht quantifizierbar und prinzipiell subjektiv.
Man kann z.B. Licht stufenweise hochdimmmen, so dass die einzelnen Sprünge als jeweils gleich empfunden werden, und das dann in Lux/Lumen ausdrücken. Dabei wird tatsächlich etwas logarithmisches rauskommen (prozentualer Anstieg pro Stufe ist konstant). Aber ob die Sprünge als jeweils 1%, 5% oder 10% heller empfunden werden, ist reines Ratespiel, extrem subjektiv.
Eben, deshalb muss das auch jeder nach eigenem Geschmack anpassen, wenn man sich schon mit sowas befassen möchte.

Meine Ausführungen sollten dem TE nur einen allgemeinen Eindruck vermitteln und sicher nicht "die perfekte Leistungskurve" versprechen, das geht ja gar nicht.
Er wird wohl noch selbst entscheiden können, was er inwieweit umzusetzen versucht. Dabei bin ich ihm auch gerne weiterhin so gut behilflich, wie es mir möglich ist.
 

toddl1985

Stammgast
26 November 2017
50
11
8
Hier mal demonstriert an einem (fiktiven) Beispiel.
Ich habe das Skript \fsm\bin\level_calc.py mit diesen Werten gefüttert: level_calc.py [TYP] 2 150 7135 1 0.50 230 FET 1 18 3500
Für [TYP] wurden dann jeweils square, cube, fifth, ninth und log eingesetzt.
Oha, das war ausführlich, aber auch interessant für mich.
Jetzt verstehe ich, warum es mir so scheint, als ob meine Rampen im unteren Teil steiler sind als im oberen Teil.
Daher muss man einen Kompromiss finden oder von mehreren Kurven die besten Abschnitte nehmen und diese sinnvoll kombinieren.
Das ist nicht trivial und erfordert viel Handarbeit, oftmals ist ein schwacher S-förmiger-Verlauf (liegendes S) recht gut passend.
Jetzt weiß ich, was ich am Wochenende vorhabe. ;)

Vielen Dank für deine Hilfe!
 

toddl1985

Stammgast
26 November 2017
50
11
8
Ich bin's schon mit der nächsten Frage:
Ich kenne es von Anduril im Rampen-Modus so, dass beim Einschalten auf Mondlicht die LED ganz kurz flackert (Toykeeper nennt es "blip"), bevor hochgerampt wird, damit man den Zeitpunkt richtig erwischt.

Gibt es das nicht mehr?
Meine selbst kompilierten Firmwares haben das nicht.
Dann habe ich mal fertige hex-Dateien von hier ausprobiert:
http://toykeeper.net/torches/fsm/
Damit ist dieser "blip" auch auch nicht mehr da.
Habe ich was kaputtgemacht oder ist der "Mondlicht-blip" entfernt worden?
 

toddl1985

Stammgast
26 November 2017
50
11
8
Und ich suche mir die Finger wund. :facepalm:
Danke für den Hinweis. Wie findet man solche Sachen, wenn man nicht ständig den Fortgang bei Anduril verfolgt? Ich habe stundenlang gesucht und nichts dazu gefunden.
 

steidlmick

Flashaholic***
15 August 2012
6.331
5.404
113
Bielefeld, NRW
Wie findet man solche Sachen, wenn man nicht ständig den Fortgang bei Anduril verfolgt? Ich habe stundenlang gesucht und nichts dazu gefunden.
Ich kenne das Problem, habe aber auch keine Lösung anzubieten.

Viele Open-Source-Projekt sind leider schlecht dokumentiert, Andúril stellt keine Ausnahme dar.
Neben wenigen oder unverständlichen Kommentaren im Quellcode trifft man auch häufig auf krytische Variablennamen oder schwer nachvollziehbare Methoden.

Die Gründe sind sicher vielfältig, aber meiner Beobachtung nach ist vor allem bei kleinen Projekten ein Faktor ausschlaggebend:
Softwareentwickler schreiben lieber Code als Texte.
Sie tragen aus Spaß an der Sache zum Projekt bei und das Schreiben von guten Dokumentationen wird von solchen Leute nicht als spaßig empfunden, sondern als Last.

Bei einem Projekt wie Andúril bleibt dann niemand übrig, der die fortlaufende und nachvollziehbare Dokumentation leitet.

Und manchmal habe ich den Eindruck, dass zumindest manche Entwickler auch gerne geheimniskrämerisch sind, um sich selbst unverzichtbar zu machen.

Wenn du dich regelmäßig mit Andúril beschäftigen möchtest, dann wirst du nicht umhinkommen, das Projekt intensiver verfolgen zu müssen.
 
  • Danke
Reaktionen: DirkTripleD

SammysHP

Flashaholic**
6 Oktober 2019
2.605
3.458
113
Celle
www.sammyshp.de
Wie findet man solche Sachen, wenn man nicht ständig den Fortgang bei Anduril verfolgt?
Diese Optionen sind ja hauptsächlich für Entwickler bzw. Taschenlampenhersteller, die bestimmte Wünsche haben, gedacht. Die Optionen in anduril.c (bzw. demnächst in einer anderen Datei) haben alle Kommentare, welche den Zweck in irgendeiner Form beschreiben. Es sind inzwischen aber recht viele geworden. Da wird auch eine separate Dokumentation nicht viel ändern, wenn diese Option in ein paar hundert Zeilen Text versteckt ist.

Um die Änderungen ganz allgemein zu verfolgen, kann man sich die History der Commits anschauen:
https://bazaar.launchpad.net/~toykeeper/flashlight-firmware/fsm/changes
 
30 Januar 2022
6
0
1
Das mit der empfundenen Helligkeitsunterschieden ist mir beim basteln mit leds erst wirklich klar geworden. Deswegen wollte ich hier auch das Beispiel anhand von PWM gesteuerten Leds mit euch teilen. (lässt sich aber auch auf constant current drive übertragen.

Beispiel:
ich hatte einen 8Bit pwm an den leds und dachte naiv wenn ich die helligkeit schritt für schritt von 0-255 erhöhe steigt die helligkeit gleichmäßig an. Allerdings passiert genau das steidelmick beschrieben hat -nur noch etwas extremer da meine werte linear waren. anfangs scheint das licht schnell heller zu werden aber am 30% passiert kaum noch etwas.
technische Ursache:
von 1 nach 2 haben wir eine verdopplung der Helligkeit.
von 2 nach 3 noch 50 prozent mehr licht
von 10 nach 11 noch 10% mehr licht
von 254 nach 255 noch ca. 0.4% mehr licht.

Mein erster Lösungsansatz war die werte prozentual gleichmässig steigen zu lassen, also in etwa
10 +10% =11
50 + 10% = 55
200 + 10% = 220

hier kommt dann die Wahrnehmung ins spiel obwohl objetiv jedes mal 10% mehr licht abgegeben wurde hat sich das verhalten subjektiv noch lange nicht linear angefühlt. Erst mit einer logarythmischen kurve (und manueller Anpassung) bin ich nahe an das gewünschte Ergebnis gekommen. Hätte ich mal vorher gegoogelt :)

Die 150 helligkeitsstufen in der anduril cfg verhalten sich letztlich ähnlich auch wenn hier je nach hardware pwm oder direct drive verwendet wird (soweit ich das verstehe). bei zwei channeln muss man dann natürlich die summe beider channel betrachten und ggf. manuelle Korrekturen zu den Abstufungen machen. Die vorhandenen cfgs liefern hier viele beispiele.