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:
a = microbit.accelerometer.get_values() # auslesen der Werte des Beschleunigungssensors
# Zuordnung der Buchstaben zu einer Richtung und speichern in data0
if a[0] >= 300 and a[1] <= 300: # micro:bit nach links geneigt und nicht über den Schwellenwert nach vorn
data0 = "l"
elif a[0] <= -300 and a[1] <= 300: # micro:bit nach rechts geneigt und nicht über den Schwellenwert nach vorn
data0 = "r"
elif a[1] <= -300 and a[0] >= -300 and a[0] <= 300: # micro:bit nach vorn geneigt und nicht über den Schwellenwert zur Seite
data0 = "f"
elif a[1] >= 300: # micro:bit nach hinten geneigt
data0 = "b"
else: # sonst 0
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"
data = data0 + data1 # data0 und data1 zusammensetzen und in data speichern
radio.send(data) # data senden
# Import der benötigten Module
from microbit import *
from neopixel import *
import radio
# Initalisierung der RGB LEDs
np = 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:
incoming = radio.receive() # Empfang über Funkhardware wird in der Variable incoming abgelegt
if incoming != None: # wenn incoming ist nicht None (leer) dann:
if incoming[0] == "l": # Abfrage des 1. Zeichens für die Richtung
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)
if incoming[0] == "b": # ein und ausschalten des Rückfahrlichts
np[4] = (led_white)
np.show()
else:
np[4] = (led_off)
np.show()
if incoming[1] == "a": # Abfrage des 2. Zeichens für die Funktionen (Licht und Hupe)
# music.play("c4:1", pin=pin16)
elif incoming[1] == "b":
lightsON()
elif incoming[1] == "c":
lightsON()
else:
lightsOFF()
else: # 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.
drive(0, 0, 0, 0)
for x in range(0, 8):
np[x] = (50, 0, 0)
np.show()