From 5ddf5d464394c0310d4119eba0853f35f9cde7dd Mon Sep 17 00:00:00 2001 From: Alan Wang <44191076+alankrantas@users.noreply.github.com> Date: Sun, 9 Jan 2022 19:57:55 +0800 Subject: [PATCH] Create controller.py --- rc_car/controller.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 rc_car/controller.py diff --git a/rc_car/controller.py b/rc_car/controller.py new file mode 100644 index 0000000..84221cb --- /dev/null +++ b/rc_car/controller.py @@ -0,0 +1,44 @@ +# 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.SQUARE) + radio.send('stop') + + sleep(250)