mirror of
https://github.com/alankrantas/microbit-micropython-cookbook.git
synced 2025-12-17 02:20:32 +01:00
45 lines
1.1 KiB
Python
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)
|