[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.
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.
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!
Cutting out precise shapes requires a steady hand, a laser cutter, or a CNC mill, right? Nope! All you need is PCB design software and a fabrication facility that’ll do the milling for you. That’s the secret sauce in [bobricius]’s very pleasing seven-segment display design.
His Hackaday.io entry doesn’t have much detail beyond the pictures and the board files, but we’re not sure we need that many either. The lowest board in the three-board stack has Charlieplexed LEDs broken out to six control pins. Next up is a custom-routed spacer board — custom routed by the PCB house, that is. And the top board in the stack is another PCB, this one left clear of copper where the light shines out.
We want to see this thing lit up! We’ve played around with using PCB epoxy material as a LED diffuser before ourselves, and it can look really good. The spacers should help even out the illumination within segments, while preventing bleed across them. Next step? A matrix of WS2812s with custom-routed spacers and diffusers. How awesome would that be?
If there’s one thing we like, it’s blinky stuff, and you’re not going to get anything cooler than a display made of tiny SMD LEDs. That’s the idea behind this wristwatch and Hackaday Prize entry. It’s a tiny board, loaded up with an ATmega, a few buttons, and a bunch of LEDs in a big charlieplexed array.
The big feature of this display is the array of LEDs. This is a 16×5 array of 0603 LEDs packed together as tightly as possible. That’s a tiny, high-resolution LED display, but even with the ATmega88 microcontroller powering this board, all the LEDs are individually addressable, and a proper font for displaying the time, or anything else, is already mapped out.
LED matrices are pretty common around these parts, but building a custom display out of SMD LEDs is another level entirely. The best one we’ve seen was this unofficial badge from two DEF CONs ago. That was done the cheater’s way with a bunch of serially addressable LED drivers. This charlieplexed version goes above and beyond, and we’re eagerly awaiting the board files so this display can be replicated easily.
We don’t think we’ve seen an Infinity Mirror Clock before, but we love this new twist on an old favorite. Different colors distinguish between seconds, minutes and hours, and an additional IR sensor detects when someone is directly in front of the clock and switches the LEDs off, allowing it to be used as a normal mirror. This build is the work of [Dushyant Ahuja], who is no stranger to hacking together clocks out of LEDs. You can tell how much progress he’s made with the mirror clock by taking a glance at his first project, which is an impressive creation held together by jumbles of wire and some glue.
[Dushyant] has stepped up his game for his new clock, attaching an LED strip along the inside of a circular frame to fashion the infinity mirror effect. The lights receive a signal from an attached homemade Arduino board, which is also connected to a real-time clock (RTC) module to keep time and to a Bluetooth module, which allows [Dushyant] to program the clock wirelessly rather than having to drag out some cords if the clock ever needs an adjustment.
Stick around after the jump for a quick demonstration video. The lights are dazzling to watch; [Dushyant] inserted a stainless steel plate at the center of the circle to reflect the outer rim of LEDs. After a quick rainbow effect, it looks like the mirror enters clock mode. See if you can figure out what time it is. For a more step-by-step overview of this project, swing by his Instructables page.
[Danny Chouinard] did a lot with very little. You can get the gist of the circuit just by looking at the photos above. it uses a 3×5 Charlieplexed LED display (this is given away by the fact that there’s only a few resistors on the board. A bit difficult to see, but between the resistors and the ATtiny84 there is a clock crystal, and on the back is a little piezo buzzer. The one thing that isn’t completely obvious is the power source. Two AAAA batteries, salvaged from a 9V battery, are able to keep the unit running at an estimated 2 years of moderate use.
The video after the break is worth a look though. It shows the various characters and information that can be flashed on the LED matrix. At first it’s hard to tell that the single user input button is being pressed by [Danny’s] thumb.
This open-source Enigma replica by the folks at [ST-Geotronics] is simply stunning. They drew their inspiration from a hilarious build we saw a few years ago that hacked a children’s toy into an Enigma machine. Their project is instead modeled on the original Enigma M4 cipher machine, and aside from a bit of artistic license, we think they nailed the visual style. As for functionality, the guide claims everything works, right down to the plugboard.
Rather than try to immediately cram everything into the final enclosure, the [ST-Geotronics] gang painstakingly worked out a prototype to be sure the four 16-segment LED displays had been wired correctly and functioned properly. The next step was laying out a swarm of buttons and resistors on a 6″x8″ perfboard. They used charlieplexing to handle the 16-segment displays (which actually have 17 LEDs each), and deceptively disguised each display as a nixie tube by mounting them vertically and encasing them in a transparent dome. The case follows the M4’s original dimensions and consists of a plywood box with scrap steel for the top plate.
Swing by their Instructables page for more details. There you can find several Arduino sketches to test functionality and the code for five different M4 operation modes.
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.