This example uses one sender and at least one receiver micro:bit. Both micro:bit modules can be connected to a single computer, or to separate computers in the same room.
- Start with just two micro:bit modules.
- Open two separate instances of the micro:bit Python Editor.
- If both micro:bit modules are connected to the same computer, they can be two different tabs in the same browser.
- If they are connected to different computers, you will need one micro:bit Python Editor running on each computer.
- If you are in a classroom, pair up with another student and adjust the radio.config(channel=7) statements in both scripts. Make sure that each pair of students is using a unique channel number, from 0 to 83.
- Connect both micro:bit modules to USB ports.
- With the first micro:bit Python Editor, click Send to micro:bit to flash the Module 1: Sender script to one micro:bit module.
- Click Show serial.
- With the second micro:bit Python Editor, Click Send to micro:bit to flash the Module 2: Receiver script into one or more micro:bit modules.
- Click Show serial.
Module 1: Sender
# Module 1: Sender
import radio
def get_input_string():
print("Enter text:")
return input()
radio.on()
radio.config(channel=7) # Set the radio channel, make sure it matches with the receiver
radio.config(length=250) # Set the buffer size to 250 characters
while True:
user_input = get_input_string()
radio.send(user_input)
print("Sent:", user_input)
Module 2: Receiver
# Module 2: Receiver
import radio
def execute_python_code(script_lines):
try:
script = "\n".join(script_lines)
exec(script)
except Exception as e:
print("Error:", e)
radio.on()
radio.config(channel=7) # Set the radio channel, make sure it matches with the sender
radio.config(length=250) # Set the buffer size to 250 characters
script_lines = [] # List to store the lines of the script
indent_level = 0 # Track the current indentation level
while True:
incoming_message = radio.receive()
if incoming_message is not None:
print("Received:", incoming_message)
if incoming_message == "run":
execute_python_code(script_lines)
script_lines = [] # Clear the script lines after running
indent_level = 0 # Reset the indentation level
else:
# Adjust indentation based on leading spaces
line_indent = len(incoming_message) - len(incoming_message.lstrip())
if line_indent > indent_level:
script_lines.append(incoming_message[indent_level:])
else:
script_lines.append(incoming_message)