Files
microbit-micropython-cookbook/rc_car/rc_controller.py
2022-01-16 11:55:14 +08:00

45 lines
1.1 KiB
Python

# For the micro:bit RC car controller
RADIO_CHANNEL = 42 # radio channel: 0~255
from microbit import display, Image, accelerometer, sleep
from math import pi, atan2, sqrt
import radio
radio.config(group=RADIO_CHANNEL)
radio.on()
def rotationPitch():
return atan2(
accelerometer.get_y(),
sqrt(accelerometer.get_x() ** 2 + accelerometer.get_z() ** 2)
) * (180 / pi)
def rotationRoll():
return atan2(
accelerometer.get_x(),
sqrt(accelerometer.get_y() ** 2 + accelerometer.get_z() ** 2)
) * (180 / pi)
while True:
pitch = rotationPitch()
roll = rotationRoll()
if pitch < -30:
display.show(Image.ARROW_N)
radio.send('forward')
elif pitch > 30:
display.show(Image.ARROW_S)
radio.send('backward')
elif roll > 30:
display.show(Image.ARROW_E)
radio.send('left')
elif roll < -30:
display.show(Image.ARROW_W)
radio.send('right')
else:
display.show(Image.DIAMOND)
radio.send('stop')
sleep(100)