Tino Hempel
Published © CC BY

Calliope mini illustriert Scannerprinzip

Der Calliope illustriert das Prinzip eines Scanners einschließlich Kallibrierung, Übertragung und Darstellung auf einem anderen Gerät.

BeginnerFull instructions provided1 hour104
Calliope mini illustriert Scannerprinzip

Things used in this project

Hardware components

Calliope mini
Calliope mini
×2

Software apps and online services

MakeCode
Microsoft MakeCode

Story

Read more

Code

1_Scanner_Grundprogramm

JavaScript
input.onButtonPressed(Button.A, function () {
    // Hier kommt der Verteile-Block zum Einsatz. Er verteilt die Messwerte der Lichtstärke aus dem Bereich 0 bis 255 auf die Tonbereiche des Calliope mini.
    music.playTone(pins.map(
    input.lightLevel(),
    0,
    255,
    131,
    988
    ), music.beat(BeatFraction.Whole))
})
// Dieser Block wird nur zum Programmstart aufgerufen. Er sorgt für die Ausgabe einer kleinen Startmelodie und fragt erstmals die Lichtstärke auf dem LED-Feld ab. Dies ist notwendig, da der erste Messwert stets 255 ist.
music.startMelody(music.builtInMelody(Melodies.PowerUp), MelodyOptions.OnceInBackground)
basic.pause(input.lightLevel())

2_Scanner_Sender1

JavaScript
input.onButtonPressed(Button.A, function () {
    // Hier kommt der Verteile-Block zum Einsatz. Er verteilt die Messwerte der Lichtstärke aus dem Bereich 0 bis 255 auf die Tonbereiche des Calliope mini.
    music.playTone(pins.map(
    input.lightLevel(),
    0,
    255,
    131,
    988
    ), music.beat(BeatFraction.Whole))
    radio.sendValue("scan", input.lightLevel())
})
// Dieser Block wird nur zum Programmstart aufgerufen. Er sorgt für die Ausgabe einer kleinen Startmelodie und fragt erstmals die Lichtstärke auf dem LED-Feld ab. Dies ist notwendig, da der erste Messwert stets 255 ist.
radio.setGroup(1)
music.startMelody(music.builtInMelody(Melodies.PowerUp), MelodyOptions.OnceInBackground)
basic.pause(input.lightLevel())

2_Scanner_Empfänger1

JavaScript
radio.onReceivedValue(function (name, value) {
    if (name == "scan") {
        led.setBrightness(value)
        basic.showLeds(`
            # # # # #
            # # # # #
            # # # # #
            # # # # #
            # # # # #
            `)
    }
})
// Dieser Block wird nur zum Programmstart aufgerufen. Er sorgt für die Ausgabe einer kleinen Startmelodie und fragt erstmals die Lichtstärke auf dem LED-Feld ab. Dies ist notwendig, da der erste Messwert stets 255 ist.
radio.setGroup(1)
led.setDisplayMode(DisplayMode.Greyscale)

3_Scanner_Sender2

JavaScript
input.onButtonPressed(Button.A, function () {
    // Hier kommt der Verteile-Block zum Einsatz. Er verteilt die Messwerte der Lichtstärke aus dem Bereich 0 bis 255 auf die Tonbereiche des Calliope mini.
    music.playTone(pins.map(
    input.lightLevel(),
    0,
    255,
    131,
    988
    ), music.beat(BeatFraction.Whole))
    radio.sendValue("scan", input.lightLevel())
})
input.onButtonPressed(Button.AB, function () {
    radio.sendValue("schwarz", input.lightLevel())
    music.playTone(131, music.beat(BeatFraction.Whole))
})
input.onButtonPressed(Button.B, function () {
    radio.sendValue("weiß", input.lightLevel())
    music.playTone(988, music.beat(BeatFraction.Whole))
})
// Dieser Block wird nur zum Programmstart aufgerufen. Er sorgt für die Ausgabe einer kleinen Startmelodie und fragt erstmals die Lichtstärke auf dem LED-Feld ab. Dies ist notwendig, da der erste Messwert stets 255 ist.
radio.setGroup(1)
music.startMelody(music.builtInMelody(Melodies.PowerUp), MelodyOptions.OnceInBackground)
basic.pause(input.lightLevel())

3_Scanner_Empfänger2

JavaScript
radio.onReceivedValue(function (name, value) {
    if (name == "weiß") {
        w = value
    } else if (name == "schwarz") {
        s = value
    } else {
        led.setBrightness(pins.map(
        value,
        s,
        w,
        0,
        255
        ))
        basic.showLeds(`
            # # # # #
            # # # # #
            # # # # #
            # # # # #
            # # # # #
            `)
    }
})
let s = 0
let w = 0
radio.setGroup(1)
music.startMelody(music.builtInMelody(Melodies.PowerUp), MelodyOptions.OnceInBackground)
led.setDisplayMode(DisplayMode.Greyscale)

Credits

Tino Hempel
12 projects • 6 followers
Contact

Comments

Please log in or sign up to comment.