MicroPython RC_Joycar-RC_Remote

Mithilfe dieser beiden Dateien machst du aus deinem Joy-Car und einem weiteren micro:bit ein ferngesteuertes Auto. Lade die rc_joycar.py auf den micro:bit deines Joy-Cars und die rc_remote.py auf den micro:bit, den du als Fernsteuerung benutzt. Neige den micro:bit, den du als Fernsteuerung benutzt, in die Richtung in die du fahren möchtest und dein Joy-Car fährt in diese Richtung. Auf Button A nutzt du die Hupe. Der Button B schaltet das Licht ein.

# Import der benötigten Module
import microbit
import radio

# Einschalten der Funkhardware
radio.on()

# Definition der Variablen zur Datenübertragung
data0 = "0"
data1 = "0"
data = "00"

# Abfrageschleife
while True:
    # auslesen der Werte des Beschleunigungssensors
    a = microbit.accelerometer.get_values()

    # Zuordnung der Buchstaben zu einer Richtung und speichern in data0
    # micro:bit nach links geneigt und nicht über den Schwellenwert nach vorn
    if a[0] >= 300 and a[1] <= 300:
        data0 = "l"
    # micro:bit nach rechts geneigt und nicht über den Schwellenwert nach vorn
    elif a[0] <= -300 and a[1] <= 300:
        data0 = "r"
    # micro:bit nach vorn geneigt und nicht über den Schwellenwert zur Seite
    elif a[1] <= -300 and a[0] >= -300 and a[0] <= 300:
        data0 = "f"
    # micro:bit nach hinten geneigt
    elif a[1] >= 300:
        data0 = "b"
    # sonst 0
    else:
        data0 = "0"

# Zuordnung der Buchstaben zu einem Knopf und speichern in data1
    if microbit.button_a.is_pressed() == 1 and microbit.button_b.is_pressed() == 0:
        data1 = "a"
    elif microbit.button_a.is_pressed() == 0 and microbit.button_b.is_pressed() == 1:
        data1 = "b"
    elif microbit.button_a.is_pressed() == 1 and microbit.button_b.is_pressed() == 1:
        data1 = "c"
    else:
        data1 = "0"
    # data0 und data1 zusammensetzen und in data speichern
    data = data0 + data1
    # data senden
    radio.send(data)
# Import der benötigten Module
from microbit import *
import neopixel
import radio
import music
# Initalisierung der RGB LEDs
np = neopixel.NeoPixel(pin0, 8)

# Einschalten der Funkhardware
radio.on()

# Vordefinitionen für die Beleuchtung
headlights = (0, 3)
backlights = (5, 6)
led_white = (60, 60, 60)
led_red = (60, 0, 0)
led_off = (0, 0, 0)

# Funktion um die Motoren zu steuern
def drive(PWM0, PWM1, PWM2, PWM3):
    i2c.write(0x70, b'\x02' + bytes([PWM0]))
    i2c.write(0x70, b'\x03' + bytes([PWM1]))
    i2c.write(0x70, b'\x04' + bytes([PWM2]))
    i2c.write(0x70, b'\x05' + bytes([PWM3]))

# Abblendlicht einschalten
def lightsON():
    for x in headlights:
        np[x] = led_white
    for x in backlights:
        np[x] = led_red
    np.show()

# Licht ausschalten
def lightsOFF():
    for x in headlights:
        np[x] = led_off
    for x in backlights:
        np[x] = led_off
    np.show()


# Steuerungsschleife
while True:
    # Empfang über Funkhardware wird in der Variable incoming abgelegt
    incoming = radio.receive()
    # wenn incoming ist nicht None (leer) dann:
    if incoming is not None:
        # Abfrage des 1. Zeichens für die Richtung
        if incoming[0] == "l":
            drive(0, 0, 40, 255)
        elif incoming[0] == "r":
            drive(40, 255, 0, 0)
        elif incoming[0] == "f":
            drive(40, 255, 40, 255)
        elif incoming[0] == "b":
            drive(255, 40, 255, 40)
        else:
            drive(0, 0, 0, 0)

        # ein und ausschalten des Rückfahrlichts
        if incoming[0] == "b":
            np[4] = (led_white)
            np.show()
        else:
            np[4] = (led_off)
            np.show()
        # Abfrage des 2. Zeichens für die Funktionen (Licht und Hupe)
        if incoming[1] == "a":
            music.play("c4:1", pin=pin16)
        elif incoming[1] == "b":
            lightsON()
        elif incoming[1] == "c":
            lightsON()
        else:
            lightsOFF()
    # wenn incoming = None, dann wird das Joy-Car geparkt.
    # Dies ist in der Regel der Fall, wenn das Joy-Car ausserhalb
    # der Reichweite der Fernbedienung ist oder wenn die Fernbedienung aus ist.
    else:
        drive(0, 0, 0, 0)
        for x in range(0, 8):
            np[x] = (50, 0, 0)
        np.show()

Achtung!

Ihr Webbrowser ist veraltet. Wechseln Sie jetzt zu einem aktuellen Browser für mehr Sicherheit, Geschwindigkeit und den besten Komfort auf dieser Seite.