Die 5x5-LED-Matrix kann Ziffern sehr gut, mehrstellige oder negative Zahlen jedoch nur als Lauftext anzeigen. Dies ist insbesondere bei der Darstellung von Messwerten sehr ungünstig, da es schnell zu Ablesefehlern kommt.
Mit Hilfe von Codierungsverfahren ist es jedoch möglich, Zahlen im Bereich von -9999 bis 9999 auf dem Display "auf einen Blick" darzustellen.
Lösung 1 - MorsecodierungBurkhard Kainka stellte diese Codierung in seinem Buch "Calliope und Micro:bit in der Praxis" vor. Die Idee ist, die Ziffern 0 bis 9 durch ihren Morsecode zu repräsentieren, da für jede Ziffer genau fünf Zeichen verwendet werden. Der Morsecode lautet:
0: – – – – –
1: • – – – –
2: • • – – –
3: • • • – –
4: • • • • –
5: • • • • •
6: – • • • •
7: – – • • •
8: – – – • •
9: – – – – •
Durch Drehung der Darstellung um 90° nach links entsteht eine Spaltenschreibweise, mit der auch mehrstellige Zahlen abgebildete werden können.
– – – – – • • • • •
– – – – • • • • • –
– – – • • • • • – –
– – • • • • • – – –
– • • • • • – – – –
0 1 2 3 4 5 6 7 8 9
Die Einer stehen dann auf der LED-Matrix ganz rechts, links daneben die Zehner, dann links die Hunderter und dann links die Tausender. Die Spalte ganz links könnte für die Zehntausender genutzt werden. Da Zahlen in diesem Bereich auf dem Calliope mini oder Micro:Bit aber eher untypisch sind, wird die Spalte als Vorzeichenanzeige genutzt. Leuchtet die mittlere LED, so drückt sie ein Minus aus. Damit steht im Display eine negative Zahl.
Beispiele
Der Soroban ist ein japanischer Abakus. Der Abakus ist eines der ältesten Rechenhilfsmittel der Menschheit. Das interessante am Soroban ist, dass dieser mit fünf Kugeln auskommt und damit alle Ziffern von 0 bis 9 darstellen kann. Er scheint also ideal für die Codierung von Ziffern auf dem 5x5-LED-Display zu sein.
Die Stäbe des Soroban bilden von rechts nach links die Stellen im Stellenwertsystem ab, sie funktionieren somit äquivalent zur Morsecodierung. In der Grundstellung liegen die vier Kugeln des unteren Bereichs unten und die Kugel des oberen Bereichs - Himmel genannt - oben. Dies stellt die Zahl 0 dar.
Jede Kugel des unteren Bereichs repräsentiert den Wert 1, die Kugel aus dem oberen Bereich den Wert 5. Werden Kugeln verschoben, so müssen nur ihre Wertigkeiten addiert werden, um die Zahl abzuleiten.
Beispiel auf dem Soroban:
Um dies auf der LED-Matrix abzubilden gilt einfach: eine geschobene Kugel entspricht einer leuchtenden LED.
Beispiel auf der LED-Matrix:
Für negative Zahlen lässt sich wiederum die linke Spalte nutzen.
Lösung 3 - DualcodierungNatürlich steht mit der Dual- (Binär-) Codierung eine weitere Darstellung von Zahlen zur Verfügung. Für die Umsetzung auf dem Calliope mini/Micro:bit wird aber bewusst nur der Zahlenraum von 0 bis 31 zugelassen, um weiterhin spaltenorientierte Ausgaben zuzulassen. Die Darstellung erfolgt wie in den anderen Verfahren von unten nach oben.
Beispiel:
Gerhard Nöcker stellt im Blog von Burkhard Kainka im Artikel Zweistellige Ziffernausgabe für Micro:bit und MicroPython ein Python-Programm vor, mit dem er die Anzeige der Zahlen so optimiert, dass zwei Ziffern dargestellt werden können. Dazu ändert er die Breite für die Darstellung einer Ziffer auf zwei Pixel ab. Die Höhe bleibt bei fünf Pixel.
Um die Ziffer 8 von der Ziffer Null unterscheiden zu können, wurde die Helligkeit der mittleren LED-Reihe verringert.
Nutzung des BlocksFür die Codierungen wurde ein neuer Block Zahlencodierung
zunächst als Custom-Block, mittlerweile als Package entwickelt.
Der Baustein zeige Zahl n zweiziffrig mit Komma an
fügt zwischen den beiden Ziffern ein Komma ein. Dieser Block ist für Anwendungen gedacht, bei dem ein analoger Wert an einem Pin eingelesen und auf die Spannung 0...3,3 V umgerechnet wird. Damit könnte man "echte" Werte messen, indem man den analogen Messwert 0...1023 mit 3 multipliziert, als Millivolt interpretiert und dann als Volt ausgibt - nur so eine Idee.
Der Baustein zeige Zahl n in Spalte x dualcodiert an
benötigt zwei Parameter, zunächst den anzuzeigende Wert und dann die Spalte beginnend bei Null.
Zum Einbinden des Blocks muss man im Editor unter Fortgeschritten - Paket hinzufügen - die URL https://github.com/ToniTaste/pxt-Number-Code-Block angeben und dann in der Auswahlliste selektieren.
Link zum MakeCode-Beispiel
Comments
Please log in or sign up to comment.