The DigiPixel


Note: Downloads at the bottom of this page.

What is the DigiPixel?

The DigiPixel is an open source Arduino and Digispark compatible shield with a 64 pixel RGB LED display and six buttons. The DigiPixel comes with it’s own Arduino library, graphic converter and demo sketches (as seen in the video) to help you get started with making your own DigiPixel creations.

‘So what sort of things could I make with the DigiPixel?’

Well, it’s really up to your imagination! You could make a game of Space Invaders, Tetris or perhaps Snake. You could write messages in the air and capture it on your camera with the AirWrite function. You could keep track of Facebook likes, use it as an electronic dice, a scrolling desk clock or even a digital name badge. It’s amazing what you can do with just 64 pixels!

The DigiPixel Tutorial Video # 1

How to Solder your DigiPixel Headers

How do I use the DigiPixel?

The DigiPixel plugs straight into an Arduino or Digispark and you program your sketches in the Arduino IDE, just like any other shield.

DigiPixel connected to a Digispark.


DigiPixel connected to an Arduino Uno.


DigiPixel Arduino Library

In order to make things nice and easy for you, I have created a DigiPixel Arduino Library. This means that all the ‘heavy lifting’ has been done for you and you can get straight into writing some code to make the DigiPixel actually do something. In fact, two lines of code is all that is needed to make the cool random pixel screen saver as seen in the video!

The Library gives you access to a whole heap of functions that allow you to draw pixels, boxes and lines in eight different colours. You can fill, clear, invert and rotate the screen plus you can even check for collisions to help with your game mechanics.




Code Examples.

Here are just a few basic lines of code to show you how easy it is to get started with the DigiPixel.

DisplayTopRightRedDisplayvertline Displayhorizline DisplayGameScreen 



The airWrite function allows you to draw images and text in the air to capture with your camera for some really cool photo effects. (Your camera will need to be set to a slow shutter speed for best results.)

Alternatively, you could mount the DigiPixel to your bike wheel to draw graphics and text as you ride your bike!




Try your hand at making a multi player game by connecting two DigPixels together via the i2c bus. (Please note that this will only work with an Arduino and not the Digispark due to a lack of pins on the Digispark).




Graphic Converter

To make things even easier for you, I have developed a graphics conversion program that allows you to import your own game level designs, text and images and then convert them into data arrays that you paste straight into your Arduino code, all with the click of a button.

The software can even differentiate between when a pixel is a barrier and when it isn’t. For example if you have a game similar to Super Mario Bros, you might have some water that you want your character to be able to fall through, in this case it would not be a barrier in the exported data array.

First, you draw your game level, graphic or text etc… in Paint.


Then open your graphic in the converter software and click ‘convert’


Your graphic will now be stored in red, green, blue and barrier data arrays that you simply paste into your code: 


Here is a video tutorial of the converter software:



Here are the dimensions of the DigiPixel (click to enlarge).




You can download files from the GitHub Repository which is updated by myself and other users of the DigiPixel. You can also download a handy ZIP file here to get you started, it contains example sketches, pcb design files, BOM, schematic etc.


Update History:

  • 23 February 2014 – Changed the airWrite function within the DigiPixel library so the delay is in milliseconds instead of microseconds. Also updated the DigiPixel Library Manual to reflect the change.
  • 21 January 2014 – Included DigiPixel dimensions in PNG format.
  • 19 January 2014 – Schematic errors corrected where U2, U3 and U4 had pin 9 connected to ground whereas it should have been pin 8 connected to ground.