Arduino Tetris on a Multiplexed LED Matrix

[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.

FrankenKindle: building an alternate Kindle keyboard

If you’ve ever thought the Kindle keyboard was a bit cramped you’re not alone. [Glenn’s] been working on developing an external keyboard for the Kindle for quite some time. It may not make easier for everyone to use, but he’s motivated to improve usability for his sister who has Cerebral Palsy.

We see a lot of keyboard hacks that solder straight to the pads under the buttons, but for a compact device like the Kindle this would really mess things up. Instead of going that route, [Glenn] sourced a 20-pin Flexible Flat Cable and breakout board that match the internal Kindle connector. The prototype seen above uses a TS3A5017 serial multiplexer chip to simulate the keyboard button presses. That multiplexer is driven by a Teensy++ microcontroller board which is monitoring a larger set of buttons on the V.Reader seen above. Check out the video after the break for a brief demonstration, then look around at the rest of [Glenn’s] blog posts to view different steps of the development cycle.

Continue reading “FrankenKindle: building an alternate Kindle keyboard”

Arduinome with many pots

[Aggaz] added 16 potentiometers to his Arduinome.The Arduinome is a monome clone based around the Arduino as a microprocessor. We seen some Arduinome builds in the past but [Aggaz’s] work augments the physical interface.

Potentiometers used in circuit bending allow for manipulation of the sounds coming out of the circuits. In this case the pots are connected to the microcontroller instead of the sound generation circuitry which means you can do whatever you want with them depending on how creative you are with the code. So far he’s just starting to get the new set of interfaces to play nicely over the serial connection. This could end up being quite popular as it only requires the addition of a multiplexer IC, the potentiometers, and the knobs.