This is at https://bomonike.github.io/microbit
This is part of a series about low-cost, low-power SOC (System on a Chip) microcontrollers (MCUs):
https://microbit.org/code/
https://www.parallax.com
https://www.parallax.com/product-category/sensors/
The proper orientation is the 25-pixel LEDs with gold connectors at the bottom.
QUESTION: have a stand?
In a browser:
https://python.microbit.org/v/3
From https://learn.parallax.com/tutorials/robot/cyberbot/get-started-microbit-and-python/use-serial-monitor
from microbit import *
import os, sys, machine
# https://microbit-micropython.readthedocs.io/en/v2-docs/os.html
print("os.uname():",os.uname())
print("")
print("sys.platform:",sys.platform)
print("sys.version_info:",sys.version_info)
print("sys.version:",sys.version)
print("sys.modules:",sys.modules)
print("sys.implementation:",sys.implementation)
print("")
print("machine.unique_id():",machine.unique_id())
print("machine.freq():",machine.freq())
Click the three vertical dots to the right of “High serial” text for this:
That’s a reminder to hold down the Ctrl key and D together to reset.
PROTIP: The micro:dot terminal does not understand the “clear” command.
The back of the micro:bit board has a reset button.
os.uname(): (sysname='microbit', nodename='microbit', release='2.1.2', version='micro:bit v2.1.2+0697c6d on 2023-10-30; MicroPython v1.18 on 2023-10-30', machine='micro:bit with nRF52833')
sys.platform: microbit, os
sys.version_info: (3, 4, 0)
sys.version: 3.4.0
sys.modules: {}
sys.implementation: (name='micropython', version=(1, 18, 0))
machine.unique_id(): b'j\x11\xe7S*\xcf\xc3\xee'
machine.freq(): 64000000
The following appears on every execution:
MicroPython v1.18 on 2023-10-30; micro:bit v2.1.2 with nRF52833
Type "help()" for more information.
>>>
NOTE: There is a uname command in every operating system.
display.scroll('Hello')
Make it flash a heart and the letters to “HeLLo” every minute:
from microbit import *
# Code in a 'while True:' loop repeats forever
while True:
display.show(Image.HEART)
sleep(1000)
display.scroll('Hello')
https://microbit-micropython.readthedocs.io/en/v2-docs/microbit_micropython_api.html
# sleep for the given number of milliseconds.
sleep(ms)
# returns the number of milliseconds since the micro:bit was last switched on.
running_time()
# returns the temperature in Celcius
temperature()
# converts a number from one scale of values to another
scale(value_to_convert, from_=(min_value, max_value), to=(min_value, max_value))
# makes the micro:bit enter panic mode (this usually happens when the DAL runs
# out of memory, and causes a sad face to be drawn on the display). The error
# code can be any arbitrary integer value.
panic(error_code)
# resets the micro:bit.
reset()
# sets the output volume (0-255) of the micro:bit speaker **V2** and
# external speaker or headphones connected to the edge connector pins.
set_volume(128) # V2
To play Yathzee?
from microbit import *
import random
while True:
if accelerometer.was_gesture('shake') or button_a.was_pressed() or button_b.was_pressed():
display.show(random.randint(1, 6))
randint(1,6) means return a number from 1 to 6.
Shake the micro:bit.
From https://python.microbit.org/v/3/ideas/dice
Press A if correct, B if wrong
Press (left) Button A to show temperature in Celsius:
from microbit import *
display.show(Image.HEART)
while True:
if button_a.was_pressed():
# Function temperature() obtains the temp in Centigrade
display.scroll(temperature())
if button_b.was_pressed():
# Convert temperature() obtains the temp in Centigrade
celsius=temperature()
fahrenheit = (celsius * 1.8) + 32
# Truncate/pad a flot to no decimal without rounding:
display.scroll(str(fahrenheit)) # for 75.2
NOTE: The default is Centigrade/Celsius because micro:bit was created for the BBC in the UK.
The microphone senses sound from a small hole on the front of the micro:bit.
from microbit import *
lightsOn = False
while True:
if microphone.was_event(SoundEvent.LOUD):
lightsOn = not lightsOn
if lightsOn:
display.show(Image.HEART)
else:
display.clear()
sleep(100)
Clap your hands.
From https://python.microbit.org/v/3/ideas/clap-lights
From https://microbit.org/projects/make-it-code-it/sound-insulation-meter/ two micro:bits are used: one a microphone and another a sound source of consistent volume and distance.
from microbit import *
import music
speaker.on()
set_volume(255) # from range 0 to 255 for loudest:
# By default notes are played in the 4th octave:
for x in range(2):
music.play(['C4:4', 'D4', 'E4', 'C4'])
for x in range(2):
music.play(['E4:4', 'F4', 'G4:8'])
if accelerometer.was_gesture('shake'):
music.play(['c', 'd', 'e', 'c'])
if button_a.was_pressed():
music.play(['c', 'd', 'e', 'c'])
if button_b.was_pressed():
# Play in 3rd Octave:
music.play(['c3', 'd3', 'e3', 'c3'])
The song should play as soon as the program is sent.
Use musical notation: https://python.microbit.org/v/3/reference/play-notes
From https://python.microbit.org/v/3/ideas/fr%C3%A8re-jacques
from microbit import *
import speech
# Defaults per https://microbit-micropython.readthedocs.io/en/v2-docs/speech.html:
# STATUS: This is unintelligible:
words="hello"
speech.say(words, pitch=64, speed=72, mouth=128, throat=128, pin=pin0)
speech.pronounce("WAY2 SHUH7D AY WAO5K TUX DHAH STOH5R.")
from https://python.microbit.org/v/3/api/speech.pronounce
PROTIP: An external speaker is really needed!
Know what these sounds mean:
from microbit import *
import random
import music
from microbit import sleep
# speaker.on()
set_volume(255) # from range 0 to 255 for loudest:
# 10 Built-in sounds https://pc-microbit-micropython.readthedocs.io/en/latest/sound/audio_sounds.html
def play(call):
if call == 1:
audio.play(Sound.HELLO)
display.scroll('HELLO')
if call == 2:
audio.play(Sound.GIGGLE)
display.scroll('GIGGLE')
if call == 3:
audio.play(Sound.HAPPY)
display.scroll('HAPPY')
if call == 4:
audio.play(Sound.MYSTERIOUS)
display.scroll('MYSTERIOUS')
if call == 5:
audio.play(Sound.SAD)
display.scroll('SAD')
if call == 6:
audio.play(Sound.SLIDE)
display.scroll('SLIDE')
if call == 7:
audio.play(Sound.SOARING)
display.scroll('SOARING')
if call == 8:
audio.play(Sound.SPRING)
display.scroll('SPRING')
if call == 9:
audio.play(Sound.TWINKLE)
display.scroll('TWINKLE')
if call == 10:
audio.play(Sound.YAWN)
display.scroll('YAWN')
sleep(1) # 1000 = 1 second
# MAIN:
for call in range(10):
display.show(call)
play(call)
To ensure the compass gives accurate readings, “TILT TO FILL SCREEN” scrolls across the display the first time you use the compass or command compass.calibrate() Stand the micro:bit on each edge until every LED light is lit for a happy face.
from microbit import *
while True:
if button_a.was_pressed():
display.scroll(compass.heading())
if button_b.was_pressed():
magnet_strength_x = compass.get_x()
display.scroll(magnet_strength_x)
From https://python.microbit.org/v/3/reference/heading
When you have two micro:bit boards:
https://learn.parallax.com/tutorials/robot/cyberbot/cybersecurity-radio-basics
From https://learn.sparkfun.com/tutorials/wireless-remote-weather-station-with-microbit/all
Use MakeCode’s radio blocks to have one micro:bit transmit a signal to a receiving micro:bit on the same channel. This is useful if your weather station is installed in a location that is difficult to retrieve data from the OpenLog.
There are a few different ways to send and receive data. Send MQTT protocol to a Raspberry Pi, which communicates with a Google Nest.
Alligator clips
https://makecode.microbit.org/reference/radio
https://forum.core-electronics.com.au/t/weather-bit-micropython-code-examples-needed/2212
https://microbit.org/projects/make-it-code-it/environment-data-logger/
https://www.hackster.io/idreams/lora-weather-station-with-bbc-micro-bit-3f14f8
Build the Robot car in the kit based on https://learn.parallax.com/tutorials/robot/cyberbot/build-your-cyberbot-rev-c-board $279 from https://www.parallax.com/product/cyberbot-robot-kit-with-microbit/
Click “Save” to download file “cyberbot-template-with-blink.hex” binary from:
https://www.parallax.com/package/cyberbot-library-python/
https://learn.parallax.com/support/reference/cyberbot-library-reference
Unzip the file.
In either Google Chrome or Microsoft Edge, go to the micro:bit Python Editor at
from cyberbot import *
Lay the pieces down separately on a non-conductive surface (not on top of each other yet).
Attach the cyber:bot board to the aluminum frame holding the batteries.
Plug the 5AA battery pack wire into the cyber:bot board.
Two green LEDs should shine on the board.
Connect the micro:bit board to the cyber:bot board.
Browse to and open cyberbot-template-with-blink.hex.
from cyberbot import *
while True:
bot(21).write_digital(1)
sleep(250)
bot(21).write_digital(0)
sleep(250)
Click the Send to micro:bit button, and follow the Connect to micro:bit popups.
(For robot navigation apps, you’d be disconnecting the USB cable after this step.)
From https://forum.micropython.org/viewtopic.php?t=11746
Microsoft MakeCode supports Bluetooth BLE on the micro:bit.
To control a micro:bit from a laptop, use a second micro:bit connected to the laptop. For both V1 and V2 micro:bits.
On the laptop running Linux with Python installed:
#!/usr/bin/python3
import serial
import time
from serial.tools.list_ports import comports as serial_ports
import sys
def find_microbit():
ports = serial_ports()
for port in ports:
if "VID:PID=0D28:0204" in port.hwid:
return port.device
return None
port = find_microbit()
if port:
print('\nMicro:bit found at port %s.\n' % port)
else:
print('\nError: No micro:bit found.\n')
sys.exit(1)
ser = serial.Serial(port=port, baudrate=115200, timeout=1)
while True:
msg = input("Send message: ")
if not msg:
break
else:
msg = msg.encode("ascii")
print(msg)
ser.write(msg)
On the micro:bit connected to the laptop:
from microbit import *
import radio
radio.config()
radio.on()
uart.init(115200)
while True:
msg = uart.read()
if msg:
msg = str(msg, 'UTF-8')
display.scroll(msg, delay=80, wait=False)
radio.send(msg)
On the microbit (with battery) you want to control remotely:
from microbit import *
import radio
radio.config()
radio.on()
while True:
msg = radio.receive()
if msg:
display.scroll(msg, delay=80)
https://learn.parallax.com/tutorials/series/artificial-intelligence-tutorial-series
See https://learn.parallax.com/node/2681
https://www.youtube.com/watch?v=mUOAQRa17T4 MDeLuise/plant-it self-hosted, open source gardening companion