Menü Schließen

Fernsteuerung II

Jeder Calliope mini verfügt über einen Bewegungssensor, über den der Neigungsgrad der Platine ermittelt werden kann. Entsprechend programmiert kann so mit einer Drehung um die x-Achse (Calliope nach links oder rechts kippen) die Lenkung, mit einer Neigung um die y-Achse (Calliope nach vorn oder hinten kippen) die Geschwindigkeit beeinflusst werden. Um das Fahrzeug zu beschleunigen, muss der Mini nach vorn, um es abzubremsen nach hinten geneigt werden. Wird er nach links oder rechts gedreht, reagiert das Fahrzeug entsprechend. Im Folgenden die Programmierung des Sende-Moduls:

Achtung! Zum Programmieren  muss in der mittleren Spalte des Editors jeweils unten auf „Fortgeschritten“ und „Erweiterungen“ geklickt und auf der sich öffnenden Seite das Feld „radio-broadcast“ angewählt werden, damit der Menüpunkt „Funk“ eingeblendet wird. Geschieht das nicht, werden die benötigten Programmierblöcke nicht vorgehalten und es kommt bei der Eingabe des Java-Codes unten zu einer Fehlermeldung.

let y_achse = 0
let richtung = 0
let x_achse = 0
let led_y_wert = 0
let led_x_wert = 0
let geschwindigkeit = 0
radio.setGroup(1)
radio.setTransmitPower(7)
basic.forever(function () {
    led.unplot(led_x_wert, led_y_wert)
    x_achse = pins.map(
    input.acceleration(Dimension.X),
    -1023,
    1023,
    -50,
    50
    )
    richtung = x_achse
    y_achse = pins.map(
    input.acceleration(Dimension.Y),
    1023,
    -1023,
    0,
    100
    )
    geschwindigkeit = y_achse
    led_x_wert = pins.map(
    richtung,
    -50,
    50,
    0,
    5
    )
    led_y_wert = pins.map(
    geschwindigkeit,
    0,
    100,
    5,
    0
    )
    led.plot(led_x_wert, led_y_wert)
    radio.sendValue("geschwindigkeit", geschwindigkeit)
    radio.sendValue("richtung", richtung)
})

Ist der Code auf den Calliope mini übertragen, zeigt sich die Funktionstüchtigkeit des Programms, wenn beim Kippen des Boards eine einzelne LED an unterschiedlichen Stellen auf der Matrix aufleuchtet und das Licht der Bewegung des Boards folgt.

Die beiden Calliope mini verbinden sich selbsttätig, sodass Steuerbefehle von der Fernbedienung direkt zum Controller auf dem Fahrzeug gelangen, der nach diesen Vorgaben die Geschwindigkeiten der Motoren regelt. Das Lauflicht ist auch auf dem zweiten Calliope realisiert. Hinzu kommt dort die Steuerung der Motoren. Hier die Programmierung des Empfängers:

enum RadioMessage {
    message1 = 49434
}
radio.onReceivedValue(function (name, value) {
    if (name == "richtung") {
    richtung = value
} else {
    geschwindigkeit = value
}
})
let motor_rechts = 0
let motor_links = 0
let led_y_wert = 0
let led_x_wert = 0
let geschwindigkeit = 0
let richtung = 0
radio.setGroup(1)
radio.setTransmitPower(7)
basic.forever(function () {
    led.unplot(led_x_wert, led_y_wert)
    led_x_wert = pins.map(
        richtung,
        -50,
        50,
        0,
        5
    )
    led_y_wert = pins.map(
        geschwindigkeit,
        0,
        100,
        5,
        0
    )
    led.plot(led_x_wert, led_y_wert)
    motor_links = geschwindigkeit + richtung
    motor_rechts = geschwindigkeit - richtung
    if (motor_links > 100) {
        motor_links = 0
    }
    if (motor_rechts > 100) {
        motor_rechts = 100
    }
    if (motor_rechts < 0) {
        motor_rechts = 0
    }
    motors.dualMotorPower(Motor.A, motor_links)
    motors.dualMotorPower(Motor.B, motor_rechts)
})

Wenn alles geklappt hat, wird zunächst der Calliope mini auf dem Fahrzeug eingeschaltet und danach der als Fernbedienung fungierende. Nach einem kurzen Moment sollte sich das Fahrzeug in Bewegung setzen und auf Lageveränderungen der Fernbedienung reagieren.

Folgekapitel (Linienfolger) >>>