Rapid Radio-Transmit Tilt Data

To make the tilt controlled robot responsive, it’s important to speed up the while True loop’s repeat rate.  The changes are simple, just remove print statements and reduce sleep(500) to sleep(50).  This will help prevent delays between tilting the controller and the cyber:bot’s response.  Without the print statements, plan to use the LED displays to verify radio communication between the tilt controller and the cyber:bot.

Example script: radio_tilt_transmit_rapid

  • If you are in a classroom, adjust the channel= in the script to your assigned channel.
  • Enter, save, and flash radio_tilt_transmit_rapid into the micro:bit that you will use to measure and transmit tilt data.  
  • Verify that the tilt direction needle still displays.
# radio_tilt_transmit_rapid

from microbit import *
import math
import radio

radio.on()
radio.config(channel=7, queue=1, length=64)

sleep(1000)

while True:
    x = accelerometer.get_x()
    y = accelerometer.get_y()
    
    angle = round( math.degrees( math.atan2(y, x) ) )
    needle = ( angle + 90 + 15 ) // 30

    display.show(Image.ALL_CLOCKS[needle])
    
    dictionary = { }
    dictionary['x'] = x
    dictionary['y'] = y
    dictionary['needle'] = needle

    packet = str(dictionary)
    radio.send(packet)

    sleep(50)

How radio_tilt_transmit_rapid Works

The radio_tilt_transmit_rapid script is almost identical to radio_tilt_transmit_test from the previous activity.  The only differences are that the print statements were removed and the sleep(500) at the end of the loop was changed to sleep(50) to make it more responsive.

Why not just completely remove the sleep call?  Probably the most important reason is to not flood the airwaves with unnecessary radio activity.  The sleep(50) call reduces the radio transmissions to around 20 times per second.  The difference between letting the micro:bit transmit as fast as it can and repeating with a 50 ms pause will not be noticeable as you tilt the micro:bit to make the cyber:bot move.