Students send a place number that stands for a word in a list both micro:bits share, and see that a message is a code both sides must agree on.
Load these into Waypoints Prepare: choose Load URL and paste the copied address, or download the file and import it. In Prepare, the worksheet's Teacher edition shows the answers; the student copy hides them.
Predict and Run 7 min · Investigate 12 min · Modify 10 min · Mix it up 3 min · Make 9 min · Quiz buzzer 4 min
This lesson joins earlier ideas: lists (places from 0), variables (the chosen place) and radio. Both micro:bits hold the same list of words. Instead of sending a word, the sender sends its place number; the receiver shows the word at that place (get value at receivedNumber). That shared list is a code, and both sides must agree on it exactly: same words, same order. Stepping through a list uses a variable that goes up by 1 and goes back to 0 when it reaches the length. A reply (such as 99 for "got it") is just another agreed number that is not a place in the list.
On the slides at these points. Students can do the whole lesson on their own; these are for the room. In the deck, the Run, Modify and Make slides have the live playground in them (the tutorial link is the backup), and the notes above are in each slide's speaker notes.
Pairs each write a list of three words. One holds up a place number; the other says the word at that place in their own list.
Swap one pair's lists into a different order. The code breaks: that is Ella and Tom.
Send your mood to the next pair's micro:bit. Did they get the mood you meant?
Both sides must share the same list in the same order. When the wrong word shows, ask them to compare the two lists item by item.
| What you will see | A question to ask | The fix |
|---|---|---|
| The wrong word shows. | Are both lists the same, in the same order? | Make the lists match exactly on both micro:bits. |
| Pressing A past the end shows nothing or an error. | What happens when choice reaches the length of the list? | Add if choice = length of words, set choice to 0. |
| The tick shows instead of the word, or the word shows instead of the tick. | Which number means 'got it', and is it checked first? | Check receivedNumber = 99 first; else show the word. |
One possible solution for each task. Other correct programs are fine.

let words = ["Hi", "Yes", "No", "Help"]
let choice = 0
radio.setGroup(1)
input.onButtonPressed(Button.A, function () {
choice += 1
if (choice == words.length) {
choice = 0
}
basic.showString(words[choice])
})
input.onButtonPressed(Button.B, function () {
radio.sendNumber(choice)
basic.showIcon(IconNames.Yes)
})
radio.onReceivedNumber(function (receivedNumber) {
basic.showString(words[receivedNumber])
})

let words = ["Hi", "Yes", "No", "Help"]
let choice = 0
radio.setGroup(1)
input.onButtonPressed(Button.A, function () {
choice += 1
if (choice == words.length) {
choice = 0
}
basic.showString(words[choice])
})
input.onButtonPressed(Button.B, function () {
radio.sendNumber(choice)
})
radio.onReceivedNumber(function (receivedNumber) {
if (receivedNumber == 99) {
basic.showIcon(IconNames.Yes)
} else {
basic.showString(words[receivedNumber])
radio.sendNumber(99)
}
})

let moods = ["Happy", "Tired", "Hungry", "Excited"]
let mood = 0
radio.setGroup(1)
input.onButtonPressed(Button.A, function () {
mood += 1
if (mood == moods.length) {
mood = 0
}
basic.showString(moods[mood])
})
input.onButtonPressed(Button.B, function () {
radio.sendNumber(mood)
})
radio.onReceivedNumber(function (receivedNumber) {
basic.showString(moods[receivedNumber])
})
Open task: any program that does what the step asks.
Stretch: Send two numbers in one message: the sender's player number times 10, plus the word's place (so 23 means player 2 said word 3). Decode it on the receiver.
Support: Give students the mood list and the A stepping blocks, and ask them to add the sending and receiving.
Your micro:bit sends 1. Your list is Hi, Yes, No. Your partner's list is Yes, No, Hi. What does your partner's micro:bit show, and why?
No. Only the place number travels, and place 1 in your partner's list is No.
Next unit: time. The micro:bit can measure how long something takes. Class ideas: a class emoji vote; a secret code where groups invent their own word lists and swap them.