Skip to content
Parallax Learn

Parallax Learn

  • Welcome
  • Tutorials
        • Tutorial Series head tag

          Tutorial Series
        • Tutorial Series

          The special, classroom-ready series pages are organized collections of tutorials for our most popular hardware and/or languages. The tutorials for each topic are conveniently accessible from a single page, shown in the order it is recommended that they be completed.
        • Robotics Series Head tag

          Robotics Series
        • Robotics Series

          • Artificial Intelligence
          • Cybersecurity: Radio Data tutorialCybersecurity
          • cyber:bot + Python
          • cyber:bot + MakeCode
          • Boe-Bot Tutorial SeriesBoe-Bot
          • Arduino Shield-Bot
          • ActivityBot with C TutorialsActivityBot + C
          • ActivityBot with BlocklyProp Tutorial SeriesActivityBot + BlocklyProp
          • Scribbler 3 Tutorial SeriesScribbler 3
        • Electronics & Programming Series Head tag

          Electronics & Programming Series
          • BS2 Board of Education Tutorial SeriesBS2 Board of Education
          • Propeller C-Language BasicsPropeller C Basics
          • FLiP Try-It Kit C Tutorial SeriesFLiP Try-It Kit + C
          • FLiP Try-It Kit BlocklyProp TutorialsFLiP Try-It Kit + BlocklyProp
          • Badge WX Tutorial SeriesBadge WX
          • Propeller BlocklyProp Basics and ProjectsPropeller BlocklyProp Basics
          • View All Tutorial Series »
        • Browse Tutorials
        • Browse Tutorials

          Individual tutorials sorted by robot or kit, and language.
        • By Robot or Kit
          • ActivityBot
          • SumoBot WX
          • Boe-Bot
          • Shield-Bot
          • cyber:bot
          • Badge WX
          • ELEV-8
          • ARLO
        • By Language
        • By Language

          • Propeller C
          • Arduino
          • BlocklyProp
          • PBASIC
          • Python
          • MakeCode
          • View All Tutorials »
  • Educators
  • Reference
  • Downloads
  • Home
  • All Courses

Cybersecurity: Radio Tilt Control

Curriculum

  • 1 Section
  • 37 Lessons
  • Lifetime
Expand all sectionsCollapse all sections
  • Cybersecurity: Radio Tilt Control
    37
    • 1.1
      Measure Accelerometer Tilt
    • 1.2
      Test Tilts
    • 1.3
      A Bit About Acceleration
    • 1.4
      Inside the micro:bit Accelerometer
    • 1.5
      How the Script Works
    • 1.6
      Try This: Take X and Y Rotation Samples
    • 1.7
      Your Turn: Combine Tilt and Rotation
    • 1.8
      Measure Rotation Angles
    • 1.9
      Measuring Rotation Angles
    • 1.10
      How Measuring Rotation Angles Works
    • 1.11
      Did You Know? Trigonometry and Rotation Angles
    • 1.12
      Measure How Far from Vertical or Level
    • 1.13
      How It Works
    • 1.14
      Z-Axis: Which Way Is Up?
    • 1.15
      How it Works: Z axis
    • 1.16
      Did You Know? This Way Up
    • 1.17
      Try This: Get Familiar Z-Axis Angle Measurements
    • 1.18
      Your Turn: All Together Now
    • 1.19
      Display Tilt Direction
    • 1.20
      Try This: Negative Hour Values
    • 1.21
      Your Turn: Display Tilt Direction
    • 1.22
      Tilt Radio Tests
    • 1.23
      Radio-Transmit Tilt
    • 1.24
      Radio-Receive Tilt
    • 1.25
      How the Tilt Radio Tests Work
    • 1.26
      Tilt Control Forward and Backward
    • 1.27
      Rapid Radio-Transmit Tilt Data
    • 1.28
      Rapid Radio-Receive Tilt Plus Forward/Backward Control
    • 1.29
      Adding a Stop Range
    • 1.30
      Transmitter Displays Stop Range
    • 1.31
      Receiver Full Tilt Control and Stop Range
    • 1.32
      Add Left/Right Tilt Control
    • 1.33
      Update the Receiver cyber:bot Script
    • 1.34
      How the Receiver Works
    • 1.35
      Radio Tilt Controlled cyber:bot App
    • 1.36
      Radio Tilt Controlled cyber:bot Code
    • 1.37
      Radio Tilt Controller Code

Transmitter Displays Stop Range

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:

  • A diamond if the y-axis tilt is less than +/- 80
  • The tilt direction needle if the y-axis reports larger values.

Let’s try it!

Example script: radio_tilt_controller_w_stop_range

  • Set your tilt controlled cyber:bot’s 3-position switch to 0 so that it doesn’t move around during this test.
  • Make sure you are working in the browser with the micro:bit Python Editor that is connected to the radio tilt controller micro:bit.
  • Set the project name to radio_tilt_controller_w_stop_range. 
  • Update the script in the editor to match the one below.
  • If you are in a classroom, make sure the channel= in the script to your assigned channel.
  • Click Save, and then click Send to micro:bit.  
  • Verify that the tilt direction needle still displays, except for when you hold it close to level.  Then, it should display a diamond.
# 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)

How radio_tilt_controller_w_stop_range Works

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.

 


Printer-friendly version
Adding a Stop Range
Prev
Receiver Full Tilt Control and Stop Range
Next

DISCUSSION FORUMS | PARALLAX INC. STORE

About | Terms of Use | Feedback: learn@parallax.com | Copyright©Parallax Inc. 2024

© 2026 Parallax Learn • Built with GeneratePress