von Gerhard Nöcker
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