GuGaplexed Valentine LED Heart

GuGaplexing is a new LED display multiplexing technique. Compared to Charlieplexing, GuGaplexing allows you to control twice as many LEDs, with just a few additional components.

GuGaplexed Valentine LED Heart project has 40 LEDs arranged in an 'Arrow Piercing a Heart" arrangement using only 5 pins of a microcontroller. The project uses an AVR ATTiny13V Microcontroller. All the 6 I/O pins of Tiny13 are used in this project; 5 for controlling 40 LEDs and the 6th pin to read a switch. Pressing the switch changes the display animation on the pierced heart.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: The Circuit Diagram

The circuit consists of a Tiny13, 40 red LEDs of 3-mm size, a bunch of BC547 (NPN) and BC557 (PNP) transistors, a few resistors and a push button switch. The Tiny13 is mounted in an 8-pin socket. The schematic in pdf and eagle format are available here.

An important point to note is that the circuit uses 5 transistor pairs using NPN and PNP transistors and these transistors must be matched for their beta values, which is done easily with suitable multimeter with transistor check function.

Briefly, the way GuGaplexing works is as follows: The microcontroller pins operate in one of three possible states: 0, 1 or Z (the high impedence state). Charlieplexing technique makes use of this fact to increase the number of LEDs that can be controlled compared to the conventional multiplexing technique, which does not exploit the third state (i.e. the high impedence state 'Z') of the pin. Thus Charlieplexing manages to control N*(N-1) LEDs using N digital pins.

Now wIth 2 pins, there are eight logic combinations: 00, 01, 0Z, 10, 11, 1Z, Z0, Z1 and ZZ. So in principle with suitable decoding of these states, it should be possible to connect 8 LEDs using two pins only, ofcourse at the cost of additional external components for the decoding job. GuGaplexing does a compromise and uses a pair of transistors (NPN and PNP) per pin to decode four of the possible eight combinations. Thats how, for N pins, GuGaplexing achieves 2*N*(N-1), which is twice as many as Charlieplexing.

More details of the GuGaplexing LED display multiplexing technique will be available as a Design Idea on EDN ( in near future.

Step 2: GuGaplexed LED Heart in Action

Here is a youtube video of the project in action.

Step 3: Source Code

Here is the source code of this project written in C and compiled using winavr gcc. The source code, Makefile and the hex file is attached.

The Instructables Book Contest

Participated in the
The Instructables Book Contest

Let It Glow!

Participated in the
Let It Glow!

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    7 Discussions


    6 years ago on Introduction

    i am not able to download the schematic in eagle format , the download file has an extension *.tmp . Please help


    10 years ago on Step 1

    You say "Now wIth 2 pins, there are eight logic combinations: 00, 01, 0Z, 10, 11, 1Z, Z0, Z1 and ZZ.". Your actually showing 9 combinations as would be expected for 2 pins with three states. Also you say "Charlieplexing ... does not exploit the third state (i.e. the high impedence state 'Z') of the pin.". As discussed in the Maxim App Note 1880 "An unlit segment's current source is very high impedance" i.e. 'Z' state. Note too that Charlieplexing has a 1/n duty cycle.

    1 reply

    Reply 10 years ago on Introduction

    I think you misread what he wrote - of course charlieplexing uses the high impedance state - he says the "charlieplexing technique makes use of this fact ... the conventional multiplexing technique ... does not exploit the third state". ("conventional multiplexing" being non-charlieplexing techniques)