Bilder anzeigen und LED-Helligkeit variieren


#1

Hallo!

Ich habe ein grundlegendes Problem mit der 5x5-LED-Display des Calliope. Ich schaffe es nicht, die basic-Funktionen zum Anzeigen von Bildern zu verwenden, nachdem ich die Helligkeit einer LED verändert habe. Folgender Code funktioniert z.B. bei mir nicht wie erwartet. Hier taucht nur einmalig der Frownie auf, und danach blinkt die LED in Displaymitte, aber weder Smiley noch Frownie sind zu sehen. Hier mein JavaScript-Code:

basic.forever(() => {
    basic.showLeds(`
        . . . . .
        . # . # .
        . . . . .
        . # # # .
        # . . . #
        `)
    led.plotBrightness(2, 2, 127)
    basic.pause(500)
    basic.showLeds(`
        . . . . .
        . # . # .
        . . . . .
        # . . . #
        . # # # .
        `)
})

Wie muss ich da vorgehen?

Danke!


#2

Ja, du hast einen weiteren Fehler in makecode gefunden. Ich finde aber keine Lösung außer dass du alles komplett selbst zeichnest. Im makecode für microbit ist der Fehler behoben. Da funktioniert es.


#3

Überspiele mal deinen Code auf deinen Mini!
Der Smilie erscheint, der Frownie auch und der Punkt.
Allerdings ist der Punkt hell und der Smilie dunkel :weary:


#4

Hallo, kmli!

Danke für Deine schnelle Antwort. Ok, da muss ich wohl einen Umweg beschreiten. In Javascript geht das zum Glück.
Die Ansteuerung der LED-Helligkeit scheint eh noch nicht so ganz ausgereift zu sein. So sehe ich z.B. auf meinem Calliope wenig Unterschied zwischen Helligkeit 127 und 255. Aktuell arbeite ich mit dem Wert 9 als “halb hell”.


#5

Ich habe nun selbst die Ursache und auch eine Lösung gefunden:

basic.showLeds funktioniert nur, wenn als Displaymode BackAndWhite (nicht BlackAndWhite!) gesetzt ist. Die Funktion led.plotBrightness schaltet automatisch auf Greyscale um, weshalb showLeds danach nicht mehr klappt. In showLeds fehlt also die Umschaltung auf BackAndWhite.

So klappt es dann:

basic.forever(() => {
    basic.showLeds(`
    . . . . .
    . # . # .
    . . . . .
    . # # # .
    # . . . #
    `)
    led.plotBrightness(2, 2, 127)
    basic.pause(500)
    // *** DIE FOLGENDE ZEILE LÖST DAS PROBLEM ***
    led.setDisplayMode(DisplayMode.BackAndWhite)
    // NUN SIEHT MAN AUCH DEN SMILEY:
    basic.showLeds(`
    . . . . .
    . # . # .
    . . . . .
    # . . . #
    . # # # .
    `)
})

#6

Gut dass es klappt, backandwhite ist aber garantiert ein Rechtschreibfehler in Makecode.