Solutions

Questions

  1. Answer: The accelerometer senses direction along several axes, sensing how the device has been tilted.
  2. Answer: rotation angle

 

Exercises

  1. Answer: It allows the micro:bit to use functions from the math module.
  2. Answer:  Using import math instead of from math import * forces any statement that uses a math module function to prepend it with the word math.
  3. Answer: It reads the accelerometer’s x-axis value and sets it equal to the variable x.
  4. Answer: continue
  5. Answer: math.atan2(y, x)

 

Projects

Holding the setup like a steering wheel, adjust the script so that the servo horn and display will point up for ‘right hand turns’ only.

1. Solution:

from microbit import *
import math

while True:
    x = accelerometer.get_x()
    y = accelerometer.get_y()
    
    angle = round( math.degrees( math.atan2(y, x) ) )
    
    if angle >= 0 and angle <= 90:
        needle = ( angle - 90 + 15 ) // 30
        display.show(Image.ALL_CLOCKS[needle])
        angle = 180 - angle
    else:
        continue

    value = 0.5689 * angle + 25.6

    pin16.write_analog(value)

 

2. Solution:

from microbit import *
import math

while True:
    x = accelerometer.get_x()
    y = accelerometer.get_y()
    
    angle = round( math.degrees( math.atan2(y, x) ) )
    
    if angle >= 45 and angle <= 135:
        needle = ( angle - 90 + 15 ) // 30
        display.show(Image.ALL_CLOCKS[needle])
        angle = 180 - angle
    else:
        continue

    value = 0.5689 * angle + 25.6

    pin16.write_analog(value)