A lot of projects get made because someone just has the parts lying around. In this case, [Ed Nisley] got given a nice 8×8 RGB LED matrix, and needed something to display. [Ed] details the transformation of stuff-lying-on-the-desk into a unique matrix display for a Geiger counter (which he also presumably had sitting around somewhere). The result is a lightshow that’s as random as radioactive decay, and that’s pretty darn random.
The first post covers the hardware layout. It’s build on protoboard, but ends up looking a lot nicer than our projects because [Ed] spent some time hiding the shift-register ICs and row-driver transistors underneath the matrix itself, which was nicely socketed above. A sweet touch is the use of SMT resistors soldered upright underneath the board to save space. Cute.
The second post covers the circuit design, and is worth a look if you’re new to driving many LEDs from a minimum number of microcontroller pins. There are eight rows, and three colors each for eight LEDs per row. Without using shift registers, this would require 8*8*8*8 = way too many pins to control. If you want a worked example of how to do this with just four microcontroller pins, have a look. (Spoiler: cascaded shift registers driven by the AVR’s hardware SPI peripheral.)
The third post starts to flesh out the software. [Ed] settled on seven colors (and off) for the display, so the matrix’s total state can be crammed into just 32 bytes, which fits nicely in even a tiny microcontroller, much less the gargantuan ATmega328. Wrapping this all up in an array of structs and providing a couple of helper functions makes quick work of the software side. The addition of a sync pulse to trigger an oscilloscope at the end of a row is a nice touch.
Next up is the Geiger counter interface software post. When a radioactive decay event is detected, the code reads out the time in milliseconds and uses that as the source of randomness. To whiten the noise, the times are run through a simple hash function: the Jenkins hash (link). This hash function was new to us and seems pretty useful for quick-and-dirty microcontroller applications.
The last post details pre-loading the matrix on startup and running a test sequence that blinks each LED to make sure they’re all working. Using a single random value to seed a software pseudo-random number generator ensures that it will (almost) never start off with the same display twice.
Phswew! That’s a lot of well-documented writeup of a well-polished project! Hope it inspires you to dig out something cool from your junk drawer and build.
[Alex] needed a project for his microcomputer circuits class. He wanted something that would challenge him on both the electronics side of things, as well as the programming side. He ended up designing an 8 by 16 grid of LED’s that was turned into a game of Tetris.
He arranged all 128 LED’s into the grid on a piece of perfboard. All of the anodes were bent over and connected together into rows of 8 LED’s. The cathodes were bent perpendicularly and forms columns of 16 LED’s. This way, if power is applied to one row and a single column is grounded, one LED will light up at the intersection. This method only works reliably to light up a single LED at a time. With that in mind, [Alex] needed to have a very high “refresh rate” for his display. He only ever lights up one LED at a time, but he scans through the 128 LED’s so fast that persistence of vision prevents you from noticing. To the human eye, it looks like multiple LED’s are lit up simultaneously.
[Alex] planned to use an Arduino to control this display, but it doesn’t have enough outputs on its own to control all of those lights. He ended up using multiple 74138 decoder/multiplexer IC’s to control the LED’s. Since the columns have inverted outputs, he couldn’t just hook them straight up to the LED’s. Instead he had to run the signals through a set of PNP transistors to flip the logic. This setup allowed [Alex] to control all 128 LED’s with just seven bits, but it was too slow for him.
His solution was to control the multiplexers with counter IC’s. The Arduino can just increment the counter up to the appropriate LED. The Arduino then controls the state of the LED using the active high enable line from the column multiplexer chip.
[Alex] wanted more than just a static image to show off on his new display, so he programmed in a version of Tetris. The controller is just a piece of perfboard with four push buttons. He had to work out all of the programming to ensure the game ran smoothly while properly updating the screen and simultaneously reading the controller for new input. All of this ran on the Arduino.
Can’t get enough Tetris hacks? Try these on for size.
[Evan] wrote in to let us know about the LED matrix infinity mirror he’s been working on. [Evan] built a sizable LED matrix out of WS2812B LEDs and mounted them to a semi-reflective acrylic sheet, which makes a pretty awesome infinity mirror effect.
Instead of buying pre-wired strands of serial LEDs like we’ve seen in some other projects, [Evan] purchased individual WS2812 LEDs in bulk. Since the LEDs just had bare leads, [Evan] had to solder wires between each of his 169 LEDs (with some help from a few friends). After soldering up hundreds of wires, [Evan] drilled out holes for each LED in a piece of semi-reflective acrylic and inserted an LED into each hole.
To create the infinity mirror effect, [Evan] mounted the LED matrix behind a window. [Evan] put some one-way mirror film on the outside of the window, which works with the semi-reflective acrylic to create the infinity mirror effect. The LEDs are driven by an Arduino, which is controlled by a couple of free programs to show a live EQ of [Evan]’s music along with patterns and other effects.
We’re surprised we haven’t seen this kind of clock before, or maybe we have, but forgot about it in the dark filing cabinets of our minds. The above picture of [danjhamer’s] Matrix Clock doesn’t quite do it justice, because this is a clock that doesn’t just tick away and idly update the minutes/hours.
Instead, a familiar Matrix-esque rain animation swoops in from above, exchanging old numbers for new. For the most part, the build is what you would expect: a 16×8 LED Matrix display driven by a TLC5920 LED driver, with an Arduino that uses a DS1307 RTC (real-time clock) with a coin cell battery to keep track of time when not powered through USB. [danjhamer] has also created a 3D-printed enclosure as well as added a piezo speaker to allow the clock to chime off customizable musical alarms.
You can find schematics and other details on his Hackaday.io project page, but first, swing down below the jump to see more of the clock’s simple but awesome animations.
Continue reading “What is the Matrix…Clock?”
[johannes] writes in with a pretty impressive LED table he built. The table is based around WS2801 serially addressable LEDs which are controlled by a Raspberry Pi. The Pi serves up a node.js-driven web interface developed by [Andrew Munsell] for a room lighting setup. The web interface controls the pattern shown on the display and the animation speed.
[johannes] built a wooden coffee table around the LED matrix, which includes a matte glass top to help diffuse the lighting. An outlet to plug in a laptop and two USB charging ports are panel-mounted on the side of the enclosure, which are a nice touch. The power supply for the LEDs is also inside the enclosure, eliminating the need for an external power brick.
While [johannes] hasn’t written any software of his own yet, he plans on adding music synchronization and visualizations for weather and other data. Check out the video after the break to see the table in action.
Continue reading “A Wooden LED Matrix Coffee Table”
Who needs a 1920×1080 OLED display when you can have an 8×8 matrix of LED goodness? That’s the question [Kathy] asked when she built this LED matrix light pen project. It looks simple enough – a 64-LED matrix illuminates as the pen draws shapes. But how does the circuit know which LED is under the pen? Good old fashioned matrix scanning is the answer. Only one LED is lit up at any time.
[Kathy] used a pair of 74LS138 3-to-8 line decoders to scan the matrix. The active low outputs on the ‘138 would be perfect for a common cathode matrix. Of course [Kathy] only had a common anode matrix, so 8 PNP transistors were pressed into service as inverters.
The pen itself is a phototransistor. [Kathy] originally tried a CdS photoresistor, but found it was a bit too slow for matrix scanning. An LM358 op-amp is used to get the signal up to a reasonable level for an Arduino Uno to detect.
The result is impressive for such a simple design. We’d love to see someone use this platform as the start of an epic snake game.
There is nothing better than a project that you can put on display for all to see. [Tristan’s] most recent project, a Decorative LED Matrix Frame, containing 12×10 big square pixels that can display any color, is really cool.
Having been built around a cheap IKEA photo frame this project is very doable, at least for those of you with a 3D printer. The 3D printer is needed to create the pixel grid, which ends up looking very clean in the final frame. From an electronics perspective, the main components are a set of Adafruit Neopixel LED strips, and an Arduino Uno with an Ethernet shield. The main controller even contains a battery backup for the real time clock (RTC) when the frame is unplugged; a nice touch. Given that the frame is connected to the local network, [Tristan] designed the frame to be controlled by a simple HTML5 interface (code available on GitHub). This allows any locally connected device to control the frame.
Be sure to check out the build details, they are very well done. If you are still not convinced how cool this project is, be sure to check out a video of it in action after the break! It makes us wish that you could play Tetris on this frame. Very nice job [Tristan]!
Continue reading “Network Controlled Decorative LED Matrix Frame”