für ein Projekt sollen Zahlausgaben “auf einen Blick” auf dem Display zu sehen sein. Also habe ich eine Idee von Burkhard Kainka als Custom-Block aufgegriffen und stelle sie hier zur Diskussion:
Die Ziffern der Zahl werden gemäß ihrer Stelle von rechts nach links über das LED-Feld angezeigt. Für die Einerstelle wird also die letzte Spalte genutzt, für die Zehnerstelle die vorletzte Spalte usw.
Die Ziffern sind wie im Morsecode mit Punkt = LED an und Strich = LED aus von unten nach oben codiert.
Die Spalte ganz links wird nicht die Darstellung der 10000-Stelle , sondern als Vorzeichen genutzt.
Via Custom-Block sieht das so aus:
/**
* Benutzerdefinierte Blöcke /
//% weight=100 color=170 icon="\uf02a"
namespace Zahlenausgabe {
/*
* TODO: zeigt n codiert an
* @param n number, eg. 5
*/
//% block
//% n.min = -9999 n.max = 9999
export function zeigecodiert (n: number): void {
basic.clearScreen()
if (n < 0) {
led.plot(0, 2)
n = n * -1
}
for (let i = 0; i <= 4; i++) {
let r = n % 10
n = n / 10
let x = 4 - i
r = 9 - r
for (let j = 0; j <= 4; j++) {
led.plot(x, r - j)
}
}
}
}
Probleme/Fragen:
Benennung des Blocks in Blockansicht unklar (es hängt immer ein n dran).
CamelCase der Funktion sorgt in der Blockansicht für Leerzeichen aber keine Groß-/Kleinschreibung
Bereitstellung des Blocks für Schüler via Github unklar
ich kann die Fragen zwar nicht beantworten, aber ich finde die Idee von Herrn Kainka auch sehr praktisch.
Gerade zur Anzeige größerer Zahlen ohne die lästige Laufschrift.
Ich habe schon mal versucht, das als eine Funktion im NEPO zu schreiben, aber da hat irgendwas nicht funktioniert und dann ist das Ganze in Vergessenheit geraten…
Es würde mich sehr freuen, wenn Du diesen Block bei GitHub bereitstellen könntest. Ich würde ihn gerne nutzen.
Viele Grüße
Heike
Der Block Zahlenausgabe hat eine Erweiterung um die zweiziffrige Darstellung von Zahlen nach der Idee von Gerhard Nöcker erfahren. Die 42 sieht dann so aus:
Hallo Toni,
die Soroban-Codierung gefällt mir gut. Jedoch sind beim Soroban die zusammenliegenden Kugeln die gültigen. Also 6 ist die erste nicht die zweite.
x x
x .
. .
. .
. x
Vielleicht kannst du in zeile 56 das led.plot(x, 4 - j) durch ein led.plot(x, j+1) ersetzen
Gruß Martin