Skip to content
Parallax Learn (Stage)

Parallax Learn (Stage)

This is the staging site. Please see https://learn.parallax.com for the official site.

  • 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 Tutorial Series
          • Cybersecurity: Radio Data tutorialCybersecurity Tutorial Series
          • cyber:bot Tutorial Series
          • Boe-Bot Tutorial SeriesBoe-Bot Tutorial Series
          • Arduino Shield-Bot Tutorial Series
          • ActivityBot with C TutorialsActivityBot with C Tutorials
          • ActivityBot with BlocklyProp Tutorial SeriesActivityBot with BlocklyProp Tutorial Series
          • Scribbler 3 Tutorial SeriesScribbler 3 Tutorial Series
        • Electronics & Programming Series Head tag

          Electronics & Programming Series
          • BS2 Board of Education Tutorial SeriesBS2 Board of Education Tutorial Series
          • Propeller C-Language BasicsPropeller C Basics and Projects
          • FLiP Try-It Kit C Tutorial SeriesFLiP Try-It Kit C Tutorial Series
          • FLiP Try-It Kit BlocklyProp TutorialsFLiP Try-It Kit BlocklyProp Tutorials
          • Badge WX Tutorial SeriesBadge WX Tutorial Series
          • Propeller BlocklyProp Basics and ProjectsPropeller BlocklyProp Basics and Projects
          • 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
          • View All Tutorials »
  • Educators
  • Reference
  • Downloads
  • Home
  • All Courses
  • Cybersecurity: Radio Tilt Control

Cybersecurity: Radio Tilt Control

Rapid Radio-Receive Tilt Plus Forward/Backward Control

The radio_tilt_bot_fb_only receiver script has statements added that will make the cyber:bot roll forward and backward based on the y-axis tilt measurement from the transmitter.  
For best results, the receiver script should repeat at top speed, so all print and sleep statements have been removed.  

Example script: Rapid Radio-Receive Tilt Plus Forward/Backward Control

  • Make sure you are working in the browser with the micro:bit Python Editor that is connected to the radio tilt controlled cyber:bot.
  • Set the project name to radio_tilt_bot_fb_only. 
  • Enter the script into the editor.
  • If you are in a classroom, adjust the channel= in the script to your assigned channel.
  • Click Save, and then click Send to micro:bit.  
# radio_tilt_bot_fb_only

from cyberbot import *
import radio

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

sleep(1000)

while True:

    packet = radio.receive()

    if packet:

        dictionary = eval(packet)

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

        fb = y / 10

        vL = fb
        vR = -fb

        bot(18).servo_speed(vL)
        bot(19).servo_speed(vR)
  • Tilt the micro:bit transmitter and verify that the receiver cyber:bot displays a copy of the needle in its 5×5 LED matrix display.  This “micro:bit transmitter” will also be called the “tilt micro:bit”.
  • Hold the micro:bit tilt transmitter level, with the 5×5 LED matrix display facing upward and the USB connector pointing toward you.  (At this point, there is nothing to tell you that you are holding it level, the needle will still point in some direction.  The holding level feature is coming soon.)
  • Set the cyber:bot board PWR switch to 2.
  • Tilt the micro:bit transmitter slightly away from you (like maybe 30 to 40°), and verify that the cyber:bot rolls forward.
  • Tilt the micro:bit transmitter slightly toward you (like maybe −30 to −40°), and verify that the cyber:bot rolls backward.
  • Set the PWR switch back to 0.

How It Works

The radio_tilt_bot_fb_only script is also almost identical to radio_tilt_receive_test from the previous activity.  One difference is that the sleep(500) was not reduced to 50; it was completely removed.  Without the sleep, the receiver script will recheck for radio data at top speed.  The only thing limiting the responsiveness is that the transmitter has 50 ms sleep calls, so it’s only transmitting every 20 ms or so.

Some statements were also added to the if… block after the x, y, and needle variables are unpacked.  

First fb = y / 10 takes the y tilt value that could hold a value in the -1024 to 1024 range and scales it down to -102 to 102, which is a perfect range for servo control.  The fb variable name is shorthand for forward/backward.  

        fb = y / 10

Next variables for velocity-left (vL) and velocity-right (vR) are set with the value stored in fb.  Let’s say you tilt the micro:bit away from you and that the fb value might be around 50.   To make the cyber:bot roll forward, vL can be 50, but vR has to be -50 to make the right wheel turn the opposite direction.  That’s why vR = -fb.

        vL = fb
        vR = -fb

Now that the vL and vR variables store equal and opposite values based on your y-axis tilt, they can be used to set the left (P18) and right (P19) servo speeds.

        bot(18).servo_speed(vL)
        bot(19).servo_speed(vR)

 


Printer-friendly version
Rapid Radio-Transmit Tilt Data
Prev
Adding a Stop Range
Next

DISCUSSION FORUMS | PARALLAX INC. STORE

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

© 2025 Parallax Learn (Stage) • Built with GeneratePress