Zur Diskussion gestellt: Custom-Block für Zahlcodierung

Hallo,

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.

Beispiel:
0 0 0 0 1
0 0 0 0 1
1 0 0 0 1
0 0 0 1 0
0 0 1 1 0

entspricht der Zahl -127.

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

Screenshot und Anwendung

Hallo ToniTaste,

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

Hallo,

das Ganze ist nun auf Hackster zu finden: Zahlencodierung. Bei der Gelegenheit habe ich noch die Soroban-Codierung ergänzt.

HG Toni

1 „Gefällt mir“

Mist! Durch einen falschen Klick gerade gelöscht - und man kann es nicht rückgängig machen. Ich versuche es neu zu erstellen.
Toni

OK, hier nun die rekonstruierte Version: https://www.hackster.io/ToniTaste/custom-block-zur-zahlcodierung-fur-calliope-microbit-884e33

1 „Gefällt mir“

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:
42
Infos unter Hackster.io.

1 „Gefällt mir“

Schön! Hatte ich auch mal in Nepo programmiert. (kleines 1x1 zweistellig)

Schau mal hier ein Hinweis https://makecode.com/blog/github-packages
wie du relativ einfach mit dem Betaeditor vom microbit https://makecode.microbit.org/beta#editor
Pakete in Github erstellen kannst. Die funktionieren netterweise dann auch für den Caliope!
Hat bei mir nach etwas probieren gut geklappt.

1 „Gefällt mir“

Danke Michael,

damit hat es endlich geklappt. Der Block steht nun unter https://github.com/ToniTaste/pxt-Number-Code-Block zum Einbinden bereit.

Toni

2 „Gefällt mir“

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

1 „Gefällt mir“

Hallo Martin,

vielen Dank für den wertvollen Hinweis. Ich habe ihn sofort umgesetzt, das Paket auf Github und die Beschreibung auf Hackster.io angepasst.

HG Tino