Here is a project for beginners to interface a 16-key (4×4) keypad with ATmega32 using 8-pins i.e. one port of the microcontroller. This is useful particularly where we need more keys but don’t want to spend more uC pins for interfacing.
The 4×4 keypad is a standard one available in the market. I’ve used here one from my earlier project. The LED shown in the schematic is just extra, which can be used anyway you like.
4×4 Matrix Key-board Interfacing with ATmega32 – [Link]
This project is pretty cool for a few reasons, and driving a huge LED matrix with a single 8-bit controller is just one of them. The idea was born when I bought 120 LEDs of the wrong type, and decided to do something with them. With that many LEDs, there are only a few things you can do, and a matrix is the natural first-place-winner in the competition of those ideas. One of the LEDs did not work, so a 12×10 matrix was out, so I settled for an 11×10 matrix. This meant I had to drive 110 LEDs. The only controller I had free was a PIC16F688 with 11 pins that can be used for output. After deciding not to use any other chips, charlieplexing was the way to go. The maximum number of LEDs one can charlieplex using N pins is N * (N – 1), so for 11 pins that number is 110. What a coincidence!
One-chip 11×10 LED matrix – [Link]
SAMSA is based on the Wiring board, with an ATmega128 microcontroller, and SAMSA II on the Arduino Mega, with an ATmega1280. Both are pretty similar, tough the ATmega1280 has 8 KB SRAM, twice the ATmega128. For SAMSA II the Arduino IDE was not used. The software was written directly in C++, using some libraries from both Arduino and Wiring.
SAMSA II has also two additional microcontrollers. One is an old Arduino Mini (ATmega168) located in the head, tasked with handling the sensors. The other is an ATmega8 and is integrated in the display. The firmware in the display was replaced with another one, freeing the main microcontroller from handling the display pixel by pixel, storing the frame buffer, etc.
The head’s microcontroller is responsible for sampling, filtering and processing sensor’s data. The data from the Sharp distance sensor and the lateral IR sensors are combined in a single “super smart distance sensor”. This microcontroller also decodes the data coming from the 38 KHz IR receiver, used for the Remote Control.
These two additional microcontrollers further reduce the load on the main microcontroller, allowing for more sophisticated behaviors.
Awesome Hexapod Packs an LED Matrix – [Link]
Last year in one of my classes we were required to make an ‘artefact’ or something that reflects the interests of the class. Most people make posters and the past two quarters that’s what my class did too. Posters however are static, usually boring, and don’t reflect that fact that everyone in the class is an EE major. We decided posters are for noobs and decided to go off the wall a little and make an LED matrix display. Lucky one of my friends John Wathen already had this beautiful 16×24 Green SMD LED matrix that he built back in high school.
16×24 LED Matrix – [Link]
Lampduino is a computer-controlled free-standing floor lamp, comprised of an 8×8 RGB LED matrix. The lamp stands 45″ high and 18″ wide. Light emanates from both sides. It has various display modes, as well as an included editor for creating animations. The lamp is controlled via an application running on a PC host. The display modes include realtime drawing, playback of previously created animations, snow, meteor, plasma, and synchronization with music. With its endless available colors, Lampduino can also be used for color therapy, or as a mood light. When running standalone, without a computer, it plays a soothing plasma simulation.
Lampduino – an 8×8 RGB Matrix Floor Lamp – [Link]
ITead Studio kindly sent me a Colorduino for beta testing. The Colorduino was inspired by SeeedStudio’s Rainbowduino LED Driver Platform. Its form factor is very similar to that of the Rainbowduino, and the layout of the connectors was intentionally designed to mimic the latter. Both boards are based on the ATmega368 MCU, and are Arduino compatible. The principal difference between the platforms is that while the Rainbowduino is based on 3 MBI5168 constant current sink drivers and a M54564 darlington source driver, the Colorduino pairs the M54564 with a single DM163 constant current driver.
Also released an Arduino library that works with both the Colorduino and Iteadʼs Arduino RGB Matrix driver shield.
Tead Studio Colorduino – A Preview – [Link]
8×8 Bicolor LED Matrix. Columns controlled by MAX6964 (17 LED PWM Controller), Rows by 74HCT138 (3-8Mux). Interfaced to ATMega32 via I2C.
8×8 Bicolor LED Matrix – [Link]
Several old 27C256 EPROMS were lying around unused. So I thought about a purpose for them. As I also had some 8×8 LED matrices, a little animated display came to mind. With each frame consisting of 8×8 pixels the 32kByte EPROM can hold 4096 frames. Each byte holds one line of the display, eight bytes one frame.
EEPROM animation display – [Link]
Tact switches are widely used as digital input devices. Normally one tact switch requires one digital I/P pin of a microcontroller but if you want to interface a matrix of such switches (say a 16 digit keypad), assigning a digital I/O pin for each key won’t be a good idea. You need to think about the way to minimize the required number of digital I/O pins of microcontroller. A very popular method is a keypad matrix where the keys are arranged into rows and columns so that a 4×4 (16) tact switches can be interfaced to a microcontroller using only 4+4 = 8 I/O pins. [via]
Theory of Matrix Keypad – [Link]
A matrix keypad uses rows and column arrangement of keys to reduce the required number of I/O pins for interfacing with a microcontroller. This article shows how you can use a 555 Timer IC to interface a keypad with just 2 connections. The 555 timer is configured in astable multivibrator where the output frequency changes with each key press. Based on how many times the Timer module overflows, the information about the pressed key is determined.
2-Wire Keypad Interface with a 555 Timer – [Link]