Zweistellige Ziffernausgabe für Micro:bit und MicroPython

von Gerhard Nöcker           
Elektronik-Labor   Projekte   Microbit 

Die Darstellungsmöglichkeiten von Zeichen auf dem 5x5 LED-Array sind begrenzt, deshalb gibt es den Vorschlag von B. Kainka, 5 Ziffern mit LED-Säulen anzuzeigen. Daraus entstand die Idee, Ziffern in einer 2X5-Matrix anzuzeigen. Ein Versuch zeigte, dass die Ziffern lesbar sind. Größtes Problem war die Unterscheidung der Ziffern 8 und 0. Da kann man die mittlere Reihe entweder nur mit einer LED darstellen (Einschnürung) oder die Leuchtstärke verringern. Das nachfolgende Bild zeigt die Darstellung der Ziffern 0 bis 9. Die führende 0 wird in einer Anzeige unterdrückt.


                                                  
                                                                                                               
Die Zehner erscheinen links im 5x5 LED-Array - die Einer rechts. Die Zeichen werden getrennt für Zehner und Einer mit „Image“ definiert und in Listen gespeichert. Eine gemessene Spannung (z.B. an einem 10k Poti mit Schleifer an Pin1) wird im Programmbeispiel in einen Wert zwischen 0 und 99 gewandelt. Die darzustellenden Ziffern sind der Index für die Listen. Die Images für Zehner und Einer werden addiert und angezeigt. Bei Werten die größer als 990 (991-1023) sind, wird ein Pfeil nach oben als Overflow gezeigt. Damit kann man immerhin eine Raumtemperatur darstellen oder eine 0-99% Anzeige realisieren. Da der Code überschaubar geblieben ist, kann man ihn leicht in andere Programme einbinden. Das Programm sollte durch die Kommentare lesbar sein .

Code für eine zweistellige Anzeige aus dem mu-Editor:

from microbit import *

display.scroll("mess_1.py", 100)

# Anzeigen definieren -> Zehner, Einer und Overflow
ze0 = Image("00000:00000:00000:00000:00000")
ze1 = Image("09000:09000:09000:09000:09000")
ze2 = Image("99000:09000:99000:90000:99000")
ze3 = Image("99000:09000:99000:09000:99000")
ze4 = Image("90000:90000:99000:09000:09000")
ze5 = Image("99000:90000:99000:09000:99000")
ze6 = Image("90000:90000:99000:99000:99000")
ze7 = Image("99000:09000:09000:09000:09000")
ze8 = Image("99000:99000:66000:99000:99000")
ze9 = Image("99000:99000:99000:09000:09000")
# Zehner-Liste
all_zehner = [ze0, ze1, ze2, ze3, ze4, ze5, ze6, ze7, ze8, ze9]

ei0 = Image("00099:00099:00099:00099:00099")
ei1 = Image("00009:00009:00009:00009:00009")
ei2 = Image("00099:00009:00099:00090:00099")
ei3 = Image("00099:00009:00099:00009:00099")
ei4 = Image("00090:00090:00099:00009:00009")
ei5 = Image("00099:00090:00099:00009:00099")
ei6 = Image("00090:00090:00099:00099:00099")
ei7 = Image("00099:00009:00009:00009:00009")
ei8 = Image("00099:00099:00066:00099:00099")
ei9 = Image("00099:00099:00099:00009:00009")
# Einer-Liste
all_einer = [ei0, ei1, ei2, ei3, ei4, ei5, ei6, ei7, ei8, ei9]

# Overflow-Anzeige
ovf = Image("00900:09990:90909:00900:00900")

# Spannung an Pin 1 messen und anzeigen
while True:
    Spannung = pin1.read_analog()   # Wert 0 - 1023
    spz = int(Spannung / 100)
    spe = int((Spannung - 100 * spz) / 10)

    if Spannung > 990:
        wert = (ovf)        # Overflow anzeigen
    else:
        zehner = all_zehner[spz]
        einer = all_einer[spe]

    wert = zehner + einer
    display.show(wert)      # Spannung anzeigen
    sleep(1000)

Da der Code überschaubar geblieben ist, kann man ihn leicht in andere Programme einbinden.

Download: mess_1.py.zip


Elektronik-Labor   Projekte   Microbit