Analog Inputs and micro:bit
Know the difference between a digital input and an analog input?
In this guide, you will be introduced to analog inputs using an external potentiometer. Learn to program it using MakeCode to measure its voltage.
Once you have finished this guide, you will understand what analog inputs are as well as how to use potentiometers with the micro:bit.
|Parts Used in This Guide|
Step 1 What is a potentiometer?
You're probably already familiar with using a potentiometer as they are commonly found on many electrical devices, such as in audio equipment where they are used for volume control. After all, potentiometers are sensors! What's a sensor? Simply put, a sensor is a device that receives and responds to a signal.
- Potentiometers are analog input sensors.
- While digital sensors deal with values that are either ‘1’ or ‘0’, analog sensor values are continuous.
- Analog sensors are able to tell us not just whether it senses something, but also how much of that something it senses.
- In the case of the potentiometer, it measures electric potential, also known as voltage.
- It has three pins.
- Two terminals (labelled 'A' and 'B' in the diagram) are connected to a resistive material, while a third terminal is connected to an adjustable wiper (labelled 'W' in the diagram).
- The resistance between the two outer terminals is fixed; it is the maximum resistance of the potentiometer.
- The resistance between the middle terminal and either one of the outer terminals ranges from 0 Ω to the maximum resistance of the potentiometer as the knob is moved.
Step 2 The potentiometer module
Let's take a closer look at the adjustable potentiometer module that will be used in this guide.
There are four pins here:
- SIG: Signal pin
- NC: No Connection
- 3.3V : 'VCC' stands for Voltage Common Collector. We'll connect the VCC pin to 3.3V on the micro:bit
- GND: In electronics, we define a point in a circuit to be a kind of zero volts or 0V reference point, on which to base all other voltage measurements. This point is called ground or GND.
- Note: Voltage is the difference in potential between two points. As it is difficult to talk about voltage without a reference point, we need another point to compare it to.
Step 3 Connect module to breadboard
Step 4 Connect GND to GND
Step 5 Connect VCC to 3.3V
Step 6 Connect P0 to SIG
Step 7 Analog pins on micro:bit
In this guide, we have connected the potentiometer's signal pin to Pin 0 on the micro:bit
But you can also connect it to other pins:
- Pin 0, 1 and 2 each are connected to a shared analog to digital converter or ADC for short. This means it can read a range of values apart from just '1' or '0'. This also means you can connect it to the potentiometer for analog signals.
- Pin 3, 4 and 10 can also be used for analog signals.
- For more information on the micro:bit and its features and pins, check out our guide, 'Meet the micro:bit'.
Step 8 Get analogue value!
By using the 'analog read pin... ' block, the micro:bit takes the analogue voltage from the potentiometer and converts it to a digital value between 0 and 1023.
Step 9 Get voltage value!
We can also convert this analogue value back to the voltage value.
- Create a new variable and name it 'vcc', give it a value of '3.3' as we have connected the 'VCC' pin on the module to '3.3V' on the micro:bit.
- Then create another variable, 'sensorVal' and place an 'analog read pin P0' block in it.
- The analog value from Pin 0 will be placed in this variable.
- Finally, create a variable and name it 'voltage'. We'll then convert the sensor value to voltage.
- Show the voltage value with a 'show number ...' block.
Step 10 Upload the code to micro:bit
To upload the hex file to the micro:bit, follow these steps:
- Connect the micro:bit to your computer using a microUSB cable
- Click on the Download button on the bottom left-hand corner of MakeCode editor
- Find the hex file
- Open up Finder on the MacOS or Explorer on Windows, and drag the hex file into MICROBIT under 'Devices' on the macOS.
- The micro:bit will flash for a few seconds while the code uploads