Raspberry Pi Pico
50 MicroPython Project Ideas

About This Page

Sometimes you have the idea that you want to do something with electronics but aren't sure where to start. I generally find that working through the basics, chalking up lots of experiences is the best way to start. Learning is a long game and, by doing lots of simple things, you will come up with lots of great ideas that take you on tangents from the simple projects you start with. Once you have a range of inputs and outputs, you have the basis for something interactive.

This page is for those of you who may be a little less patient. I have considered all of the components that are explained and described in the MicroPython section and thought about some project ideas, from the very simple to the not so simple, that you could get your teeth into. Change the objectives or the components for the project wherever and whenever you like. This list is best used as a set of ideas to start you thinking for yourself about what you would like to do.

50 Project Ideas

No.IdeaComponents
1A reaction game. Have a program sleep for a random amount of time before lighting up an LED. If the player presses the button within a certain timeframe, score them a point.LED(s), RGB LED, Pushbutton
2Practise your pushbutton techniques using LEDs as indicators. A single press should turn on one LED. A press and hold for more than a set period of time (eg 2 seconds) should light another. You can also try to detect double presses. These techniques will allow you to make more of the control possibilities for pushbuttons in future projects.LEDs, pushbutton
3Practise using potentiometers to get predictable readings that you can use. A simple starting point would be to divide the reading by 256 (use a double slash for floor division). Scale further to the point where you feel that a user has reasonable control. Work out how to map your readings onto a scale that is not simply a power of 2 (so you need to do more than just divide).Potentiometer
4Use 3 potentimeters and an RGB LED. Set the colours on the RGB LED based on readings from the potentiometers.Potentiometer, RGB
5Play a simple tune and light up LEDs in time with the notes. The simple way to do this is with note on and off messages. You can also do this with lists. For a bigger challenge, write a library that allows you to do this. Keep your tune simple, with relatively few different notes.LEDs & Buzzer
6Make a binary to denary converter. Add a pushbutton to change to hex mode.LEDs, Shift register, Pushbuttons, 4x7 Segment display. Pushbutton.
7Connect 8 LEDs to a shift register and make some patterns. Think about timing, blinking and sweeping.LEDs, Shift Register
8Use one or two shift registers to create a bar graph. Work out a reasonable scale and use the bar graph to show something like a reading from the internal temperature sensor. (You can read this value from the ADC that is not broken out to a pin – ADC(4). Look up on the WWW the details of how to convert your reading to degress celsius).LEDs, Shift Register(s)
9Create a single 6-sided die with LEDs. You need 7 of them arranged as the dots of a die.7 LEDs
10Make an arpeggiator. Play a sequence of notes from a scale. Then shift all of the notes up and down semi-tones on the press of a button. Add a 3rd button to cycle through different arpeggios (major, minor and different versions thereof). This is easy to do if you add all of the note frequencies to a list such that each list item differs by a semitone from the items next to it.Buzzer, Pushbuttons
11Connect at least 13 pushbuttons to the Pico. These can act as the keys for an octave. Use a further two buttons to switch up and down octaves. Then you have a piano of sorts.Buzzer, Pushbuttons
12Copy the outline code for using a rotary encoder. Use it to control a group of LEDs. This can be done simply or can be made more intricate depending on your take on the idea.Rotary Encoder, LEDs
13Make a noise machine. Have the buzzer sound when the button is pressed and stop when it is not. Change the tone being played depending on the value read from the potentiometer.Buzzer, Pushbutton, potentiometer
14Control a group of LEDs by turning the knob of a potentiometer.LEDs, Potentiometer
15Use a reading from a soft potentiometer for setting the note in a noise machine.Soft Potentiometer, Buzzer, Pushbutton
16Use a reading from a flex sensor for setting the note in a noise machine.Soft Potentiometer, Buzzer, Pushbutton
17Arrange two light dependent resistors next to each other on a breadboard. Detect whether a hand is moved left to right or right to left over them. Experiment with how close you put them to one another and with the timing you want to detect your gesture.Light Dependent Resistors
18Connect an RGB LED. Generate a random colour and light the LED with it. Generate another and transition smoothly from the current to the new colour.RGB LED
19Make traffic lights for different scenarios. Use RGB or single colour LEDs. You can do the sequence simply or consider 3 and 4-way junctions and pedestrian crossings.RGB LEDs, LEDS, Pushbuttons
20Use LEDS to demonstrate truth tables for different logic gates. You can use shift registers. LEDs, Pushbuttons, Shift Register
21Use a pushbutton to toggle an LED on and off. Work out how to detect a single and double press of the button and assign different functions to it.LED, pushbutton
22Write the interfaces using input statements to be able to set the time and date on the built-in RTC. Also add the facility for recurring alarms.None
23Use button presses and/or potentiometer readings to control the blink rate of some LEDs.LEDs, Pushbuttons, Potentiometer
24Make a steady hands game. Strip a wire and use insulating tape to make a a loop. Strip a longer wire to make the 'track'. Connect one end of the track to GND. Connect one end of the loop to a digital pin. Treat the circuit like a switch. When the loop touches the track, the switch is closed. Sound the buzzer when this happens.Buzzer, bare solid core wire.
25Make a stopwatch on the 4x7 segment display.4 x 7 segment display, pushbuttons
26Implement the Simon memory game using the port expander.4 x Leds, 4x pushbuttons, buzzer, PCF8574A Port Expander
27Wire up and test a 16x2 character LCD. Use it to display the readings from any sensor.16x2 Character LCD + any sensor
28Use a 16x2 character LCD a matrix pad and some pushbuttons. Make a calculator.16x2 Character LCD + pushbuttons/matrix keypad
29Use a 16x2 character LCD and some pushbuttons. Make a stopwatch.16x2 Character LCD + pushbuttons.
30Use your pushbuttons to work out some routines for entering a message that can be scrolled across the LCD. For example, you could hold a button down to enter the text entry mode. Use pushbuttons to cycle through letters and another button to select the character.16x2 Character LCD + pushbuttons.
31Get to know the matrix that you are using by practising a variety of animations on it. Light up columns, rows in sequence. Blink LEDs on and off. Light and unlight the whole grid in different orders. Design an animation with multiple frames. Store images in your program and rotate them on your matrix.Any matrix
32Make a rock, paper, scissors game or a variant thereof.Any matrix, pushbutton
33Make a scrolling race track game with a 'vehicle' that you can move left and right. Make the dot that represents the car blink.Any matrix, pushbuttons
34Design a maze to be represented using binary numbers (32, 32 is a good size to start with). Use bitwise operations to work out which part of the grid to show on your matrix. Have a defined start and end. You could use timing as the basis for judging how well the maze has been completed.Any matrix, 4 pushbuttons
35Pressing the button rolls a die. The number of LEDs lit on the matrix is increased by the number rolled on the die. Make it so that, at the end, the player has to roll the exact number or unlight LEDs up to the die roll. Keep track of the number of turns taken to get to victory. With a few extra buttons, have a high score feature.Any Matrix, Pushbutton
36Light up LEDs on at a time on the matrix. The user needs to press the button when all of the LEDs are lit in order to score. Then speed up the process and leave less time for them to press the button. Keep track of how many times they managed to do it.Any matrix, pushbutton.
37A Lights Out game. You need a couple of pushbuttons to help the user choose a light to flip. Look up the game online to see how it works.Any matrix, pushbuttons
38Make a text entry system using pushbuttons. Find out how high scores used to be entered on arcade machines and use a similar system.Any matrix, pushbuttons
39Work out how to detect whether an analogue joystick is pointing up, down, left or right. These joysticks are two potentiometers that naturally rest somewhere close to the centre of the range of values you can read. Use the matrix to display arrows indicating the direction in which the stick is moved. You can also work out diagonals for 8-way movement.Any matrix, Analogue joystick
40Work out how to move a dot around the matrix using an analogue joystick. Then use a pushbutton to turn LEDs on and off on the matrix.Any matrix, Analogue joystick, pushbutton
41Design 12 clock face patterns for the matrix you are using. Then animate them so that they circle repeatedly from 1 to 12. The user should press the pushbutton when the clock hits 12. Then the animation should speed up. The more consecutive correct hits, the better.Any matrix, pushbutton
42Use the matrix you have as a display for the time on the internal RTC. Use the pushbutton(s) you have as triggers for viewing or setting the time.Any matrix, pushbuttons
43Use 2 rotary encoders to move a blinking dot around the matrix of your choice. These normally have a built-in switch. You could use one switch to place a dot, the other to remove it. Pressing both buttons at the same time could store the image.2 x rotary encoders, any matrix.
44Use conductive tape or play-doh with lots of small jumpers to make an input matrix. If you want to match the touches to a 5x5 LED matrix, use 10 electrodes to make your input matrix. That leaves you two buttons for other purposes. MPR121, Optional matrix
45Play-doh buttons to move dots around the display. What else would you need?MPR121, Any matrix.
46This breakout board is designed to show 2 digits, one per 5x7 matrix. With some creativity, you can display 2 digits on each display. A font, Whaley Sans was designed by David Whale to display 2 digits on a micro:bit matrix. You can look this up or have a go at your own font (https://github.com/whaleygeek/mb_clock). You have to work out how best to represent the digits in the space you have. Use this as a display for a stopwatch or for the internal RTC.LED Dot Matrix Breakout
47Using the Bluefruit LE Connect App, take readings from the accelerometer. Choose an axis you wish to use (x axis is not a bad choice). The readings will come to you as floating point numbers from -1 to 1. Convert these to frequencies to play on the buzzer. Have the buzzer play only when the button is held down. Tilt your phone around and make some sweet music.Bluefruit LE Uart Friend, Pushbutton, Buzzer
48Use the Pimoroni scroll pack as a display for a stopwatch or the time. Use the built-in RTC or connect an external one. Design a 3x7 font for numbers. With this, you have enough space on the display for 4 digits and a colon. You can look this up in the micro:bit section of this web site if you are not sure how to go about this. The scroll pack has those built in buttons that will work nicely with this project.Scroll Pack, (External RTC)
49You can combine a Raspberry Pi pHAT and a Pico accessory on the Waveshare Pico To HAT. Work out how to work with the two items and control some movement on the Scroll Pack.Touch PHAT, Scroll Pack
50Use the LEDs on the shim as an indicator for sensor readings or, more interestingly, make a reaction game.LED Shim