Mehrstellige Zahlen mit dem Calliope anzeigen? Normalerweise nimmt man dafür einfach den Block "zeige Zahl" und oft reicht das auch... Aber Messwerte, die sich schnell ändern (z. B. Lichtstärke, Lage, Kompassrichtung oder Beschleunigung), kann man damit nicht gut beobachten.
Es gibt allerdings einen Trick: Ganz ohne externe Hardware, wie z. B. 7-Segment-Anzeigen, und ohne zusätzliche Software. Indem wir mit dem 5x5-Display etwas "nachbauen", das sich schon seit ein paar Tausend Jahren bewährt hat: einen Abakus. Hier die japanische Variante, "Soroban" genannt:
Das funktioniert so: Für jede Ziffer gibt es eine Stange. Ganz rechts sind die Einer, links daneben die Zehner, links davon die Hunderter usw. Auf jeder Stange gibt es fünf Kugeln: vier unterhalb des horizontalen "Querbalkens", eine darüber. Die unteren vier Kugeln stehen jeweils für eine "1", wenn sie noch oben geschoben werden. Die obere Kugel zählt "5", wenn sie nach unten geschoben wird. Damit kann jede einzelne Stange eine Ziffer zwischen 0 und 9 anzeigen. Ziemlich guter Trick, oder? ;-) Oben im Foto ist die Zahl 1.234.567.890 dargestellt.
Hier noch ein Beispiel, diesmal die Zahl 12.457. Die dafür relevanten Kugeln sind zur Veranschaulichung schwarz umrandet. Kugeln im unteren Bereich, die noch oben zum Querbalken hin geschoben werden, stehen jeweils für eine "1"; Kugeln im oberen Bereich, die nach unten zum Querbalken hin geschoben werden, stehen für eine "5". Beides addiert, bekommt man die Ziffer auf der jeweiligen Stelle:
Und das gleiche machen wir nun einfach mit dem Calliope-Display! Jede Display-Spalte steht wie beim Soroban für eine Ziffer. Wir können keine Kugeln verschieben, daher schalten wir einzelne LEDs an bzw. aus. Die LED in der obersten Zeile steht für die "5", sofern sie eingeschaltet ist. Die vier LEDs darunter zählen jeweils "1", genau wie beim mechanischen Vorbild. Das hier ist also die Zahl 12.457 auf dem Calliope-Soroban:
Damit können wir jede beliebige 5-stellige Zahl auf dem Display anzeigen! Die entsprechende Erweiterung lässt sich ganz einfach in MakeCode hinzufügen ("Fortgeschritten"/"Erweiterungen" wählen und dann folgende URL eingeben):
https://github.com/kimmeskamp/pxt-abakus
Sie stellt dann einen Bereich "Abakus" zur Verfügung (erscheint unterhalb von "Grundlagen"), mit einem eigenen Block "zeige Zahl", der aber diesmal die oben beschriebene "Abakus-Methode" verwendet:
Zahlen mit weniger als fünf Stellen werden rechtsbündig angezeigt, d. h. die "Einer" stehen immer ganz rechts.
Hier nochmal alle Ziffern in der Übersicht:
Und als Demo, wie schnell das geht, hier ein Programm, dass seine aktuelle Laufzeit anzeigt (damit es nicht zu sehr flackert jeweils mit 100 ms Pause):
Das sieht dann im Ergebnis so aus (der Ausschnitt im Clip geht bis 10.000 Millisekunden und beginnt dann wieder von vorn). In der zweiten Spalte von links kann man gut die Sekunden mitlesen:
Der neue Block "zeige Zahl" kann aber noch mehr: Kommazahlen und negative Zahlen anzeigen! Für ein Minuszeichen nehmen wir die LED in der Mitte; für ein Komma die zweite LED von unten. Da beides nicht für eine Ziffer steht, gibt es keine Verwechselungsgefahr. Natürlich verliert man jeweils eine Spalte, aber anders geht es nicht, wenn man keine weiteren Bauteile, wie die RGB-LED blockieren will. Das hier heißt z. B. -1, 95:
Kommazahlen werden automatisch auf die maximal darstellbare Anzahl an Nachkommastellen gerundet. Um bei Zahlen zwischen -1 und 1 eine Stelle mehr zu haben, wird 0, 1234 als, 1234 geschrieben und -0, 123 als -, 123.
Zahlen größer als 99.999 bzw. kleiner als -9.999 sind nicht darstellbar und werden mit einem '#' im Display quittiert. Beim Calliope braucht man sie aber ohnehin praktisch nie. Wenn man doch einmal wirklich große Zahlen hat, z. B. die Laufzeit des Programms oben 100.000 Millisekunden erreichen würde, kann man das immer noch umrechnen und als 100 Sekunden anzeigen (ggf. mit Nachkommastellen).
Zum Schluss noch eine weitere Variante der Darstellung, die ich "Tropfstein" genannt habe, denn da gibt es anders als beim Soroban keine LEDs, die unterschiedlich viel "Wert" sind. Stattdessen zählen wir die Ziffern von 1 bis 5 wie ein von unten wachsender Tropfstein im Display ab und die Ziffern von 6 bis 9 wie ein Tropfstein, der von der Decke wächst:
Die Variante ist standardmäßig eingestellt, weil ich sie übersichtlicher finde, lässt sich aber umstellen mit dem Block "wähle Anzeige":
Und ein letzter Block noch, um flexibel eine einzelne Ziffer in einer bestimmten Spalte anzuzeigen:
Viel Spaß beim Ausprobieren!
Thorsten Kimmeskamp




Comments