Binär-Uhr mit dem Kniwwelino basteln

Bei dieser Uhr mit Mikrocontroller und LED-Streifen ist Kopfrechnen angesagt. Wie spät es ist, wird nur mit Nullen und Einsen dargestellt.

Lesezeit: 5 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 17 Beiträge

(Bild: Tim Schmitz)

Von
  • Christian Moll
Inhaltsverzeichnis

Eine Binär-Uhr gehört wohl zu den geekigsten Arten, die Uhrzeit anzuzeigen, aber sie ist auch hilfreich, um die elementare Grundlage von allen Computern und Mikrocontroller-Projekten zu erklären und zu verstehen. Es geht um das Bit, die 1 und die 0. Dafür wird die Uhrzeit meist erst in ihre Ziffern und dann in deren Binärwerte zerlegt. Aus 14:52 Uhr wird also zunächst 1 4 5 2 und daraus 01 0100 101 0010. Der Unterschied zwischen 1 und 0 kann etwa durch an- und ausgeschaltete LEDs dargestellt werden. Seit Frühjahr 2018 hängt auch eine große Binär-Uhr in Bahnhof von St. Gallen in der Schweiz, die seither für rauchende Köpfe sorgt.

Um unsere Binär-Uhr mit dem Mikrocontroller Kniwwelino nachzubauen, muss man dabei nicht einmal eine Programmiersprache beherrschen. Stattdessen nutzen wir die grafische Programmierumgebung für den Kniwwelino, in der man Code aus leicht verständlichen Blöcken zusammenschiebt – so erinnert das Programmieren eher an das Bauen mit Lego als an C++ oder eine andere Sprache. Alle Programmfunktionen rund um die Uhrzeit sind etwa gelbe Klötze, während Logikabfragen hellblau sind. Am Ende haben wir sogar zwei Varianten gebaut und lassen die Zeit auf dem Kniwwelino oder in der LED-Skyline aus dem Lasercutter anzeigen. Dabei muss man von unten nach oben rechnen.

Kurzinfo
  • Eine Binär-Uhr lesen
  • Binär-Uhren selbst programmieren
  • LED-Streifen an Kniwwelino anschließen

Checkliste

  • Zeitaufwand: ein Nachmittag
  • Kosten: 25 Euro
  • CAD: Grundkenntnisse
  • Programmieren: Block-Umgebung

Material

  • Kniwwelino
  • USB-Netzteil
  • WS2812-LED-Streifen
  • USB Micro-B Breakout-Board
  • Kabel
  • Holz

Die Idee dazu kam uns beim Betrachten der 5×5-LED-Matrix des Kniwwelino. "Wenn man da eine Zeile nicht benutzt und zwischen Stunden und Minuten eine Spalte frei lässt... könnte man doch..." Zusammen mit dem Schülerpraktikanten Tim haben wir im Luxemburgischen Institut für Wissenschaft und Technik (LIST) die Uhr gleich umgesetzt und in der ersten Version nur die Matrix als binäre Anzeige genutzt. Praktisch ist dabei, dass der Kniwwelino, sobald er eine Verbindung zum Internet hat, von einem NTP-Server (Network Time Protocol) die aktuelle Uhrzeit abruft und sie auch regelmäßig abgleicht.

Kniwwelino programmieren (6 Bilder)

Ist der Kniwwelino mit dem WLAN verbunden, muss er noch einmal mit dem Tablet, Smartphone oder Rechner verbunden werden

Wer ein Kniwwelino-Programm baut, fängt immer mit zwei roten Blöcken (mache beim Start und wiederhole dauerhaft) an – ähnlich wie die Arduino IDE, die ein void setup und ein void loop vorgibt. Der Übersichtlichkeit halber haben wir das Hauptprogramm, das als endlose Schleife durchläuft, aber sehr kurz gelassen und nutzen mehrere Unterprogramme. Zu finden sind die orangefarbenen Funktionsblöcke mit einem Klick auf den Button >> einfach, sodass alle möglichen Blöcke angezeigt werden.

Nun lassen sich Stunden und Minuten getrennt abholen und damit alle Berechnungen durchführen. "Berechnungen" ist schon etwas hoch gegriffen, denn in der ersten Version werden nur Minuten und Stunden in ihren Einser- und Zehner-Anteil aufgeteilt (Blöcke zu Minuten und zu Stunden) und entsprechend dem Wert die richtigen LED in einer Spalte angeschaltet. Dabei speichern wir den aktuellen Wert der Stunde (14 Uhr) etwa in der Variable k und teilen diese durch 10 und nehmen nur den Rest, also 4. Jetzt haben wir die zweite Ziffer (4) der Uhrzeit in der Variablen stunde.

Anschließend müssen wir die Ziffer in ihre binären Werte (0100) umwandeln und die passenden LEDs anschalten. Dies erledigen wir mit einer Reihe an wenn-dann-Abfragen. Die erste überprüft, ob die Ziffer ungerade ist. In diesem Fall müsste die unterste LED leuchten (zeichne einen Pixel auf der LED Matrix X 1 Y 4 LED Zustand 1). Danach ist nur noch abzugleichen, ob es sich um eine 3, 5, 7 und 9 handelt. Bei unserer 4 geht es aber weiter zu den Abfragen, um welche gerade Zahl es sich handelt. Für eine 2 (0010) oder 6 (0110) müsste die zweite LED leuchten, für unsere 4 nur die dritte LED (zeichne einen Pixel auf der LED Matrix X 1 Y 2 LED Zustand 1). Die folgende Abfrage für die erste Ziffer der Uhrzeit (1) ist deutlich kürzer – Uhrzeiten gehen ja nur bis 24 Uhr.

Wichtig ist noch, die Spalte zu löschen, bevor sie neu geschrieben wird, ansonsten sind recht schnell alle LEDs einer Spalte an (Blöcke zu clear line0 bis zu clear line4) . Für diese "manuelle" Binär-Uhr braucht man allerdings sehr viele Blöcke, um zum gewünschten Ziel zu kommen. Daher haben wir im nächsten Schritt das Programm optimiert.