7-Segment Anzeige steuern

Hey, ich sitze grad an einem privaten Projekt das in 1.440 Frames über eine 7-Segment Anzeige die
Uhrzeit anzeigen lassen soll.
Dazu hab ich mir erstmal einen Converter gebastelt, der die die akteulle Framezahl in die jeweile Uhrzeit convertiert.
Ist die Animation also gerade bei Frame 225 wird eine Uhrzeit von 03:45 ausgegeben, nur eben ohne Doppelpunkt, den brauch ich hier nicht.

Das funktioniert soweit auch ganz gut. Ich bekome also am Ende immer 4 Zahlen raus. Zwei für die Stunden und zwei für die Minuten.

Daraus will ich nun folgendes machen:
Dazu hab ich mir eine einfane 7-Segment anzeige Modeliert, so wie man sie aus alten Weckern u.w.w. kennt.
Die Segmente sollen nun entsprechend der akteullen “Uhrzeit” auf den Y Achse um 10 cm nach oben verschoben werden,
so dass also immer die passenden Segmente oben stehen.

Mein Problem ist nun, ich verstehe nicht, wie ich die einzelnen Segmente ansteuere.
Is echt schwer zu erklären…
Wenn an erster Stelle z.B. eine 1 steht, sollen natürlich nur die entsprechenden Segmente hochgefahren werden, die andern müssen unten bleiben. Ändert sich die Zahl, müssen die Segmente ensprechend reagieren.

Google mag mir bei so nem Thema wohl nich großartig helfen, zumal ich nich mal weiß nach was ich suchen soll xD
Daher hoffe ich dass mir hier einer helfen kann.

7-Segments.c4d (611 KB)

da COFFEE ab der R20 nicht mehr unterstütz wird, dürfte es schwierig werden zu helfen…

Warum animierst es nicht einfach?

Das ist ein Dot-Matrix-Display, kein 7-Segment-Display… aber das nur nebenbei.
Wenn Du schon so heftig in xPresso unterwegs bist, dann generiere doch für jede Ziffer ein “Setup” und schalte schlicht zwischen den Zuständen hin und her. Mit den Logic-Nodes sollte das doch kein Problem sein.
edit: Da fält mir noch das Pose Morph Tag ein. Für jede Ziffer eine Pose und dann über xPresso ansteuern.

Aus Prinzip. :smiley:

Alle 1.440 Zustände? Ne danke ^^

Das mit dem Pose Morph werd ich mir mal anschauen. Danke.

hatte sowas wie eine Fallblatt Uhr vor den Augen :-/ aber bei einer Digital Uhr sind’s ja auch nur Zahlen von 0-9 in verschiedenen geschwindigkeiten… hm…

Was du bauen willst ist ein BCD (Binary Coded Digital) zu 7 Segment Decoder. Aus 4 Bit, die einfach aus einem Integer zu gewinnen sind, generiert der die Ansteuerung für die 7 Segmente. Das Schaltbild kannst du direkt so mit Logik Gattern in Xpresso, oder auch als Code, bauen.

Sieht bisher gut aus. Die einzelnen “Segmente” lassen sich gut kooridieren.

Soll das n Witz sein? Hab ne Ewigkeit gebraucht um das so hin zu biegen dass es funktioniert xD
Is mein erstes mal dass ich mit xpresso arbeite ^^

Geplant ist, dass die Segmente dann aus einer gleich aussehenden Masse heraus die jeweilige Urzeit anzeigen.
Mit der richtigen Beleuchtung sollte das dann den gewünschten Look erhalten.

Und dann gleich fett mit Coffee eingestiegen? Respekt.
Numbers.c4d (510 KB)
Das Null hat ein UserData-feld mit einem Slider, um die Ziffern einzustellen. Geht jetzt bei mir nur bis drei, aber das Prinzip sollte klar werden. Mit Deinen Stings kannst Du die Compare-Nodes ja auch füttern (denk ich…).

Der einfachste Weg wäre sicher über Texturen gegangen. Auch die kann man per xPresso laden. Alles was Du da also brauchen würdest, wären 10 Bildchen mit den Ziffern von 0 bis 9. Den String für die jeweils zu ladende Datei (Dateinamen) erstellst Du ja praktisch schon. Alternativ könntest Du auch die Texturen alle in die Datei packen und das Materialtag per xPresso steuern (“Material” input port).

Das klingt spannend - kannst Du das genauer erklären?

Also das mit dem Pose Morph hat perfekt funktioniert. Exakt das was ich wollt ^^ Danke nochmal dafür.
Ich löads nochmal hoch damit ihr wisst wie ich meinte. Einfach unten an den Frames spielen.

Von diesem COFFEE oder wie das heißt hab ich übrigens keine Ahnung. Ich zieh nur Verbindungen vo einer Node zur andern xD
Das was für mich nach “Code” aussieht hab ich aus den Presets.

Danke schonmal für die tatkräftige Unterstützung. :slight_smile:
Jetz kann ich den Rest drum rum basteln.

7-Segments.c4d (808 KB)

Schau dir mal auf dieser Seite http://www.cmm.gov.mo/eng/exhibition/secondfloor/MoreInfo/Displays.html die Tabelle an, die bestimmt welche Segmente bei welchem Input aufleuchten. Das kann man im Prinzip 1:1 mit Bool Operatoren abbilden http://www.interfacebus.com/ic-bcd-to-7-segment-decoder-schematic.html
Vor zig Jahren habe ich das auch mal in Xpresso gebaut. Ist eine nette Übung zu Boolscher Algebra.

Oh Gott, das sieht mir doch etwas zu komplex aus das ganze. Tut mir leid aber ich glaub geht etwas über meinen Verstand ^^

Mir fällt grade ein, dass der Time Node den aktuellen Frame auch als Zeit, also in Sekunden ausgeben kann. Da hättest Du Dir viel Arbeit sparen können…

Habs grad mal probiert. Egal wie ich es einstelle, es wird immer nur der akteulle Frame ausgegeben.
Hast Du vllt. ein anderes Node verwendet?

Time sollte ein Real Wert in Sekunden sein. Frame sollte den aktuellen Frame als Integer ausgeben.

Time ist quasi Frame/FPS
Das macht dich Framerate unabhängig. Solltest du mit Frame arbeiten ist deine Schaltung nutzlos, wenn du aus welchen Gründen auch immer mal deine FPS ändern solltest.

Ok, verstehe. Da ich die Framerate aber schon vorher auf 1 FPS gestellt hatte, bringt mir diese Funktion natürlich jetz nix mehr ^^
Aber trotzdem ein sehr guter Tipp. Den kann ich bei späteren Projekten gut gebrauchen :slight_smile:

Time funktioniert übrigens auch zwischen Frames, z.B. bei Scene Motion Blur. Da kann man lustige Sachen mit bauen :slight_smile: