7 LED’s, 2 Pins – Beat That, Charlieplexing

[Tim]’s Dice10 is an exercise in minimalism. Building an electronic dice using an ATtiny10 with code that fits within 1kB is not too difficult. Charlieplexing the LED’s would have used three of the four available GPIO pins. [Tim] upped the game by using just two GPIO pins to drive the seven LED’s for the dice. A third GPIO is used as a touch button input. Besides the ATtiny and the LED’s, the only other component used is a capacitor across the supply inputs.

2 GPIO for 7 LED's
2 GPIO for 7 LED’s

The LED’s are grouped in three pairs of two LED’s and a single centre LED. Usually, Charlieplexed LED’s are connected across pairs of GPIO pins. But his scheme includes connections to the 5V and GND terminals, besides the two GPIO pins. Building a truth table makes it easy to figure out what’s going on.

STATE PB2 PB0 LED's
1     Z   Z   --
2     L   Z   LED 1/2
3     H   Z   LED 3/4
4     Z   L   LED 5/6
5     Z   H   --
6     H   L   LED9
7     L   H   --
8     H   H   --
9     L   L   --

Only the logic states used are listed in the table. It’s possible to add two more LED’s between PB0 and GND and one more anti-parallel with LED9, making a total of 10 LED’s driven by two pins. That’s quite a hack. The important thing here is to have two LED’s in series in the arms that connect to either 5V or GND.

[Tim] has posted  the code and hardware source files on his Github repo, and his blog post has some additional details on how he solved the problem.

If you’re looking for more inspirations on minimal dice designs, check this “PIC powered pair of electronic dice” which uses a PIC 12F629 with five outputs driving a pair of 7 pips to make a dual dice.

1kb-thumb

If you have a cool project in mind, there is still plenty of time to enter the 1 kB Challenge! Deadline is January 5, so check it out and fire up your assemblers!

Another Way To Look At Charlieplexing

Charlieplexing is a technique that allows you to drive a larger number of LEDs than wouldn’t be possible with the same number of I/O pins on a traditional multiplexed matrix. If we lost you there just think of it as lots of blinky lights connected to a small number of pins. It works by leveraging the one-way nature of a diode. Current will only flow through an LED in one direction so if you hook up your display in a clever way you can drive multiple LEDs from one I/O by switching the polarity of that pin between voltage and ground. [M.Rule] recently looked at using Charlieplexing with LED modules. His conceptual approach to the problem is different from those we remember seeing before and it’s worth a look.

Instead of just using the formula to calculate how many LEDs he can drive [M.Rule] is using a table of I/O pins to establish how many and in what order these displays can be connected. Each colored set of blocks represents an LED module. The graphic above shows how 18-pin can be utilized. He even filled in the unused pin combinations with input buttons.

Improve Charlieplexing Performance With Interrupts

single_chip_led_matrix

[Dmitry] was shopping for LEDs and accidentally pulled the trigger on the wrong type. Since he didn’t want to be wasteful, he figured he should at least take the time to build something with them.

A LED matrix display was the obvious project choice, but he only had a PIC16F688 at his disposal. Since the micro controller only has 11 output pins, charlieplexing was the only way he would be able to light the entire matrix.

While testing his LED array, he found charlieplexing to be a bit disappointing. The fact that the LEDs can get relatively dim, depending on the number of units lit at any particular time struck him as annoying.

In order to improve the performance of his charlieplexed array, he first decided to scan through all of the LEDs rather than just those that needed to be lit. This ensured that all of his LEDs had the same 1/110 duty cycle and were always as bright as possible. He also chose to use interrupts when lighting the LEDs. This meant that his code does not need to take into consideration any specific timing requirements to maintain persistence of vision. He also double-buffers the display to help reduce flicker.

He says that he ran into certain constraints with the PIC chip he chose, so he used a handful of lookup tables to ensure smooth operation of his display. He was quite satisfied with the results, and we think that the interrupt-driven display looks like it works just fine from where we’re standing as well.

Be sure to stick around for a quick video explaining and demonstrating his single-chip LED matrix.

Continue reading “Improve Charlieplexing Performance With Interrupts”

Intro To Charlieplexing

charlie

[sixerdoodle] sent us this nice firefly project that serves as an intro to charlieplexing. We’ve mentioned charlieplexing before, in our LED Life post and the Breath Controlled LED candles post. This project is quite simple and focues mainly on how to make a charlieplexed circuit work.

The goal was to create a tiny firefly bottle with SMD LEDs and as few wires as possible. In the video, after the break, it is hard to tell just how small this thing is until we see the battery. There are clear directions and fantastic pictures detailing exactly how to set up a charlieplexed circuit with 6 LEDs.

Continue reading “Intro To Charlieplexing”

LED Life And Charlieplexing


Yesterday, we featured [Andrew]’s orientation aware camera. We want to highlight another one of his projects: LED Life. It’s a 6×5 LED matrix playing Conway’s Game of Life. He used the low power MSP430 like our e-paper clock. The best part of the writeup is his explanation of how Charlieplexing works. Microcontroller GPIO pins generally have three possible states: output high, output low, and input. This combined with the directional nature LEDs and some creative wiring means you can run a large matrix of individually addressable LEDs with just a few IO pins. Instead of just flipping the IO pins on and off you change their assigned state. Have a look at [Andrew]’s site for some great illustrations of how the system works. A video of his LED Life board is embedded below. Continue reading “LED Life And Charlieplexing”

Fluid Simulation Pendant Teaches Lessons In Miniaturization

Some projects seem to take on a life of their own. You get an idea, design and prototype it, finally build the thing and — it’s good, but it’s not quite right. Back to the drawing board, version 2, still not perfect, lather, rinse, repeat. Pretty soon you look around to discover that you’ve built ten of them. Oops.

That seems to be the arc followed by [mitxela] with this very cool fluid simulation pendant. The idea is simple enough; create a piece of jewelry with a matrix of tiny LEDs that act like the pendant is full of liquid, sloshing about with the slightest movement. In practice, though, this project was filled with challenges. Surprisingly, [mitxela] doesn’t seem to number getting a fluid dynamics simulation running on a microcontroller among those problems, at least not to a great degree. Rather, the LED matrix seemed to cause the most problems, both in terms of laying it out on the 25-mm diameter PCB and how to address the LEDs with relatively limited GPIO on the STM32 microcontroller. The solution to both was diagonal charlieplexing, which reduces the number of vias needed for the 216-LED matrix and allows the 0402 to be densely packed, along with providing some tolerance for solder bridging.

And then there’s the metalworking heroics, which no [mitxela] project would be complete without. This seems to be where a lot of the revisions come from, as the gold-plated brass case kept not quite living up to expectations. The final version is a brass cup containing the LiR2450 rechargeable battery, a magnetic charging connector, and the main PCB, all sealed by a watch crystal. The fluid simulation is quite realistic and very responsive to the pendant’s position. The video below shows it in action along with a summary of the build.

If you want to catch up on [mitxela]’s back catalog of miniaturized builds, start with his amazing industrial ear adornments or these tiny matrix earrings. We’re also fond of his incredible shrinking MIDI builds. Continue reading “Fluid Simulation Pendant Teaches Lessons In Miniaturization”

Solve: An ESP32-Based Equation Solving Calculator

We’re suckers for good-looking old-school calculators, so this interesting numerical equation-solving calculator by [Peter Balch] caught our attention. Based around the ESP32-WROOM-32 module and an LCD, the build is quite straightforward from an electronics point of view, with the main work being on the software side of things.

A custom keyboard was constructed on Veroboard using a handful of tactile switches arranged in a charlieplexing array to minimize the number of IO pins consumed. For the display, an off-the-shelf 240×320 ILI9341-based module hooked up by SPI was used. A single lithium cell was used for the power supply, connected to a USB

You don’t need much to make a usable keyboard.

charger module, but you could just as easily substitute a 3 x AA battery box. The case was designed in DesignSpark mechanical and 3D printed. It’s unclear what keyboard version they settled on; there are options for one with keycaps and one without. Regardless, a 3D-printed frame sits atop the keyboard circuit, with the graphics printed on photo paper and a protective coversheet on top. Continue reading “Solve: An ESP32-Based Equation Solving Calculator”