This further help resource contains download links for additional code examples and also a walk-through video that covers the experiment in full. The video also has hints and tips to help you complete the experiment.
Inventors Kit Experiment 8 - Making A Game Using The Compass:
The BBC micro:bit comes with a built-in compass so it can tell which way is north. It does this using a chip that is very sensitive to magnetism and can detect earth’s magnetic field. This means it will not work properly if it’s held near a magnet. The compass also needs calibrating before use, don’t worry though as this is a lot easier than it sounds. In this example, we will make a game where a secret compass heading is selected randomly and an LED blinks faster or slower depending on how close to the correct heading the BBC micro:bit is facing. When the player is confident they are facing the correct heading they press a button and see if they are correct.
Video Walk-Through With Hints & Tips:
Code Downloads:
The code examples below have been individually zipped and can be downloaded by clicking on your preferred option. Once unzipped you can either open the and edit the code in appropriate editor or place the HEX file onto your microbit*.
MakeCode Editor & Python Code Downloads:
- This code was created with the MakeCode Editor, download the HEX file here.
- This code was created with the Python Editor, download the HEX file here.
Legacy Editors Code Downloads:
NOTE: The legacy editors will disappear at some undisclosed point in the future. The code can still be placed on a microbit and will run regardless but you won't be able to use an editor. When that happens, switch to using one of the currently supported editors. We've already made the switch as the new editors are better and more fully featured.- This code was created with the Touch Develop Editor, download the HEX file here.
Kitronik Inventors Kit Resources:
Exp No#. | Experiment Name. | Resource Type. |
---|---|---|
1 | Say Hello to the BBC micro:bit. | Further Help. |
2 Pre V1.7 | Using an LDR and analog inputs. | Full Experiment + Further Help. |
2 V1.7 | Using a Light Sensor & analog inputs. | Full Experiment + Further Help. |
3 | Dimming an LED using a potentiometer. | Further Help. |
4 | Using a transistor to drive a motor. | Full Experiment + Further Help. |
5 | Using the accelerometer to control motor speed. | Further Help. |
6 | Setting the tone with a piezo buzzer. | Further Help. |
7 | Wind Power. | Full Experiment + Further Help. |
8 | Making a game using the compass. | Further Help. |
9 | Capacitor charge circuit. | Further Help. |
10 | Using an RGB LED. | Further Help. |
11 | Making a pedestrian crossing. | Full Experiment + Further Help. |
12 | Making a random dice. | Full Experiment + Further Help. |
Get The Kitronik Inventors Kit For The BBC microbit:
We do two versions of the Inventors Kit for the BBC micro:bit, with or without the BBC micro:bit included. Chose the option that is right for you from the links below.©Kitronik Ltd – You may print this page & link to it, but must not copy the page or part thereof without Kitronik's prior written consent.
4 comments
Mark Donnison
Hi, When you first try to make use of the microbit compass the microbit asks you to calibrate it by drawing a circle. Once you do this you should be able to run code that utilises the compass. In this guide, there is code to turn the microbit into a compass, try it out and see how you get on: https://www.kitronik.co.uk/pdf/the-kitronik-parents-guide-to-the-bbc-microbit.pdf
kotryna
for me it isn't working. at first, the microbit shows “DRAW A CIRCLE” I done that. Milion times.The led isn't flashing.. what is the problem???
Mark Donnison
Hi John, Thanks for your feedback, I will look into this and update as required. Thanks again.
John Bibby
The code for Exp8 only works for 91% of the time due to not using modulo 360 arithmetic. As the difference should never be greater than 180 degrees the following line needs to be added after:- 7 difference = Maths.abs(goal – degrees) 7.5 if (difference>180) {difference = Math.abs(360 – difference)}