Hi Roland,
irgendwie reden wir aneinander vorbei...
Du baust dir zunächst eine config für den Minutenzeiger mit dem Offset 0x0239. Schließt den Stepper an den Ausgang und läßt dir damit die Minuten anzeigen.
Wenn das abgeschlossen ist, machst du eine neue config für den Stundenzeiger mit dem Offset 0x0238.
Hier gehst du auf den Tab Sim Variable und schaust dir den unteren Teil an. Er hat die Überschrift Config References
Aktiviere den ersten Eintrag durch Setzen des Hakens und klicke im nächsten Feld rechts auf den Pfeil nach unten.
Hier klappen nun alle output-configs auf, die du bislang festgelegt hast. Suche hier den Namen der config für den Minutenzeiger und wähle ihn aus.
Nun setzt du in dieser Zeile ganz rechts einen Bezeichner . Normalerweise steht hier das #-Zeichen. Ersetze es durch ein "A".
Dadurch hast du nun die Möglichkeit, in der Transformzeile sowohl den aktuellen Offset des Stundenzeigers (repräsentiert durch das $-Zeichen) UND den des Minutenzeigers (repräsentiert durch das "A") zu kombinieren.
Ohne den Minutenzeiger sah deine Formel vermutlich so aus: if($>11,($-12)*30,$*30)
Bei dieser Formel springt der Stundenzeiger immer nur eine Stunde weiter. Ein Umstand, der dir zu grob ist. Daher muß eine Möglichkeit her, die Minuten (aus dem Offset bzw. deiner anderen config) mit einzubeziehen.
Diese Möglichkeit bietet dir die config reference. Hier holen wir uns einen neuen Wert in die Formel, nämlich den Offset aus der Config für die Minuten, dem das Formelzeichen A zugeordnet wurde.
Somit muß die neue Formel für die Anzeige der (analogen) Stunde wie folgt erweitert werden:
if($>11,($-12)*30+(A/12*6),$*30+(A/12*6))
Eine if-Bedingung liest sich in MF wie folgt: wenn (Bedingung, dann mache diese, sonst das)
Die Wenn-Bedingung ist hier if($>12,, soll heißen, daß die Stunden vom Offset 0x0238 mit einem Wert von 0 - 23 übergeben werden. Jetzt dreht dein Stundenzeiger aber nach 12 Stunden ein weiteres mal seine Runde und kann die 13 Uhr nicht als 13 anzeigen, sondern zeigt ein zweites Mal auf die 1. Daher in der Formel: if($>11,
Wenn aktuelle Stunden größer ist als 11 (also 12 bis 23) subtrahiere vom Stundenwert 12 und multipliziere das Ergebnis mit 30° (Winkel für die Stunden 0 bis 11).
Wichtig ist hier die Klammersetzung, denn sonst wird 12*30 multipliziert , weil Punkt vor Strichrechnung geht und erst dann wird $ subtrahiert, was falsch wäre. Daher muß ($-12) in die Klammer, damit es zuerst gerechnet wird, weil bekanntlich das, was in der Klammer steht, zuerst gerechnet wird.
Normalerweise wandert dein Stundenzeiger zwischen 12 und 13 Uhr bzw. 0 und 1 Uhr nicht, erst ab 13 bzw. 1 Uhr springt er. Da kommt jetzt die Neuerung in die Formel:
Nun soll der Stundenzeiger aber quasi nicht von der 0 zur 1 springen, sondern von 0 auf 00:01, 00:02, 00:03, 00:04 und 00:05. Er soll also nicht in einer Stunde 30° springen, sondern 5 * 6° "hüpfen". Also teilen wir die 60 Minuten vom Minutenzeiger durch 5 und erhalten 12 (Minuten). Der Stundenzeiger soll also 1 Minuten weiterrücken, wenn der Minutenzeiger 12 Minuten weitergegangen ist.
Also dividieren wir den Wert, den der Minutenoffset über das Formelzeichen A liefert durch 12. Die Bruchteile, die in der Zeit von Minute 0 bis 11 entstehen, werden im Transform nicht berücksichtigt, also ist A/12 solange 0, von 12 bis 23 ist der Wert 1, von 24 bis 35 ist er 2 usw.
Das Ergebnis dieser Division wird dann mit 6° multipliziert. Solange der Wert 0 ist (minute 0 bis 11) bewegt sich der Stundenzeiger nicht. Sobald der Wert 1 oder höher ist, wird der Stundenzeiger also 6° weiterbewegt.
Dies bedeutet für unsere Formel: if($>11,($-12)*30+(A/12*6),
Ist der Stundenwert also größer als 11, beispielsweise 12, wird hiervon 12 subtrahiert. Nun kommt der Offset des Minutenzeigers ins Spiel. Von Minute 0 bis 11 ist dieser Wert ebenfalls 0 und der Stundenzeiger bleibt auf der 12 bzw 0. Denn 11/12 (integerwert) ist 0, multipliziert mit 6 ist ebenfalls 0.
Ab 12:12 sieht die Rechnung anders aus: (12-12)*30+(12/12*6) ist 0+1*6=6. Der Stundenzeiger wird also um 6° weiterbewegt und steht nun auf der 00:01.
Um 17:48 Uhr sieht es ähnlich aus: (17-12)*30 + (48/12)*6 = 5*30 + 4*6 = 150 + 24 =174
Der große Zeiger steht also auf der 48 und der Stundenzeiger auf der 4. Minute nach der 5
Ist es nun vor 12:00 Uhr, greift die dann Bedingung: if($>11,($-12)*30+(A/12*6),
$*30+(A/12*6))
Sie arbeitet wie der erste Teil, nur das hier vom aktuellen Stundenwert nicht 12 subtrahiert wird.
Der Stunden- und der Minutenzeiger müssen lediglich einmal beim Erstellen der Config kalibriert werden, indem du den Nullpunkt setzt. Aktiviere dann noch den Kompaß-Modus, weil deine Zeiger ja jeweills mehr als 360° drehen.
Bei jedem erneuten Einschalten steht dann deine Uhr zunächst auf 12:00, sobald aber der Simulator läuft und die Offsets gelesen werden, stellt sich deine Uhr automatisch nach der Simulatoruhr. Ein erneutes kalibrieren ist somit nicht erforderlich. Selbst, wenn du die Simulatoruhr manuell verstellen solltest, stellt sich deine analoge Uhr immer wieder nach dieser Uhr automatisch ein.
Wir können uns hierzu auch gerne auf Discord treffen. Einfach auf
https://discord.com/ gehem, discord downloaden und hier oben auf den Link klicken.