Arduino multiplexed LEDs using Twitter API

Tools: Arduino Processing Java C++ Soldering iron

A board with a single Arduino microcontroller and 26 LEDs. It connects to Twitter and spells out the messages by lighting LEDs corresponding to the letters of a message.

Stranger Things board spelling the word "Dark" from my Twitter post.

A scene from Stranger Things, involving the lights.


The inspiration for this project is taken from the Stranger Things series. In one of the episodes a character becomes trapped in a different world but manages to communicate through the lights. His mother facilitates communication by writing letters next to the lights.

I used Java (Processing) to connect to Twitter and get the messages. Then the program communicated serially with Arduino C++ code which would tell the circuit which lights are on or off and operate the ultrasonic sensor.

I used an ultrasonic sensor which would detect if someone approached the board, so it would only start "talking" when someone approaches it. It also listened to the mic input and reacted to loud sounds.

The final circuit of Stranger Things lights using charlieplexing.

Back side of the board with the circuit drawn on it and Arduino connected to the board with the wires already soldered.

Problem and Solution

An Arduino board that I owned only had 13 outputs, but I needed 26 LEDs - one for each letter. Therefore instead of associating a pin to a LED directly, I used a type of multiplexing called Charlieplexing to associate a set of pins to it. For example, instead of [pin 1 HIGH => LED A ON], the signal looks like this: [pin 1 HIGH, pin 2 LOW => LED A ON]. As a result I ended up using only 6 pins to control 26 LEDs.

Charlieplexing is relatively simple in theory, but in practice it requires precision of engineering. A lot of LEDs and wires need to be properly interconnected. I had to draw the circuit on the other side of the board in order to ensure precision.