The only thing that needs to be added to the transmitter radio_tilt_transmit_rapid script is an if... block that displays one of two things:
Let’s try it!
# radio_tilt_controller_w_stop_range from microbit import * import math import radio radio.on() radio.config(channel=7, queue=1, length=64) while True: x = accelerometer.get_x() y = accelerometer.get_y() angle = round( math.degrees( math.atan2(y, x) ) ) needle = ( angle + 90 + 15 ) // 30 if abs(y) > 80: display.show(Image.ALL_CLOCKS[needle]) else: display.show(Image.DIAMOND_SMALL) dictionary = { } dictionary['x'] = x dictionary['y'] = y dictionary['needle'] = needle packet = str(dictionary) radio.send(packet) sleep(50)
The radio_tilt_controller_w_stop_range script is just radio_tilt_transmit_rapid with an if…else… statement added.
When the absolute value of y is greater than 80, it displays the tilt direction needle, just like it has up to this point. But, if the y value is anywhere in the -80 to 80 range, it instead displays a small diamond to tell you that your forward/backward tilt is pretty close to level.
if abs(y) > 80: display.show(Image.ALL_CLOCKS[needle]) else: display.show(Image.DIAMOND_SMALL)
The if abs(y) function returns the positive-only version of any value y might store. So, if y stores -20, abs(y) returns 20. If y stores 20, abs(y) doesn’t change anything and just returns 20. So, if abs(y) > 80 is a concise way to check if y is outside the -80…80 range. Another way to check if y is outside that range would be if y > 80 or y < -80.