Activity

Advanced | MakeCode, Python | Compass, LED display, Radio | Communication, Magnetism, Radio waves, Relational operators, Selection, Sensors

## Step 1: Make it

### What is it?

A wireless alarm to warn you when someone opens a door – or leaves it open.

### How to make it

• You will need two micro:bits with different code on each. One micro:bit acts as a radio transmitter and the other as a radio receiver.
• Attach the transmitter micro:bit and battery pack to the corner of a door frame and attach a magnet close to it on the corner of a door.
• Place the receiver micro:bit anywhere nearby.
• If the alarm doesn’t work as you expected, you may need to change the magnetic force strength number in the transmitter code. Pressing button A shows the current magnetic force reading. Use this to decide on the threshold number, taking readings with the door open and closed.

### How it works

• The transmitter program uses the micro:bit’s compass (magnetometer) input sensor and a loop to measure the strength of the magnetic field every two seconds.
• It uses selection so when the magnetic field strength falls below a certain level (the threshold), it sends a radio signal ‘open’. If the magnetism reading goes above the threshold, it sends the signal ‘closed'.
• When the receiver micro:bit receives the signal ‘open’, a cross appears on its LED display and an audible alarm sounds. When it receives the signal ‘closed’, a tick appears on its LED display and no sound plays.

### What you need

• two micro:bits and at least one battery pack
• a magnet
• some adhesive putty to fix a magnet to a door and a micro:bit to a door frame
• if you have a V1 micro:bit and want to hear an audible alarm, optional headphones, buzzer or speaker and crocodile clip leads to attach them

## Step 2: Code it

### Sensor / transmitter:

``````1from microbit import *
5
6while True:
7    if button_a.was_pressed():
8        display.scroll(compass.get_field_strength())
9    if compass.get_field_strength() < 100000:
10        display.show(Image.DIAMOND_SMALL)
12    else:
13        display.clear()
15    sleep(2000)
16
``````

``````1from microbit import *
2import music
6
7while True: