231a-ac Proposal

From CSclasswiki
Jump to: navigation, search

Interactive LED box

Project Goal

The goal of this project is to create a low resolution display of graphical art that interacts with people who are handling it. My basic idea is to create such a "magic box" with a LED matrix on one side. It should be small enough that it can be held by hands. Also, it has to work independently from a computer, so that it be carried around. "(It will be best if the series of graphics generated by the user can be stored somewhere.)"

The basic design of input and output are the following:

  • Input
    • amount of tilt
    • frequency of vibration (optional)
  • Output
    a low resolution display made of LED lights that refreshes constantly
  • Processing
    • Store amount of tiltation and vibration(optional) in a data structure
    • Visualize the data by controlling the intensity of individual LEDs.


  • single-color LED matrix with MAX72XX Driver

A basic schematic for a MAX72XX, showing the data signals coming from the Arduino. [1]

  • dual-color LED matrix with 2 MAX72XX Drivers

Schematic for 2 MAX72xx used in combination to drive a 2 color common cathode matrix [2]

  • accelerometer

Schematic for ADXL3XX breakout board [3]

Hardware List

LED matrix

  • 8x8 LED matrix display
8x8 RG LED matrix

I found one with dual-color(red and green) LEDs ($4.5). With different intensity, we may get a range of pleasant colors including orange and yellow. The matrix height is 3.2in, which is the biggest among other 8x8 LED matrices with reasonable price that I could find.

LED Dot Matrix Display Red/Green #LTP2188AA LiteON

  • LED display driver

LED display drivers lets you control individual LEDs easier. My two choices are either MAX7219 or MAX7221($7.02 a piece). They can drive either 64 individual Led's, or up to 8 digits of 7-segment displays. The big advantage of these drivers are that they can be controlled from the Arduino using only 3 of the digital output pins. There are also examples on driving a dual-color matrix using 2 such drivers. On the other hand, the limitation is that I couldn't use PWM(Pulse Width Modulation) to control the intensity of individual LEDs. For the dual-color LED, with PWM, I could virtually get 255*255 colors; I can only set 4 states: off, R,G,RG without PWM.

Most arduino projects uses MAX7219 and MAX7221 interchangable, while I think in my case MAX7221 would work better because of the following reason:
"The MAX7221 was designed for reduced electromagnetic interference (EMI). EMI could lead to some jitter in the readings from the analog inputs of the Arduino or if the Led matrix is placed near some audio circuit it can introduce audible noise to the signal. So, if your project would go into categories like : audio gadget, audio levelmeter, (low-)voltage measurement, etc. than better take the MAX7221. "[4]

Since my project also has analog input to sense acceleration, I'm afraid that EMI may prevent me from getting correct input from the accelerometer. MAX7219, MAX7221: Serially Interfaced, 8-Digit, LED Display Drivers


ADXL32X accelerometer with breakout board

We can use the accelerometer's ability of sensing acceleration to measure a variety of things, such as acceleration (of course!), tilt angle, incline, rotation, vibration, collision detection, and gravity. In my project, I will mainly use the accelerometer to measure tilt angle.

My first choice is ADXL322, a dual-axis accelerometer (measures acceleration along x and y coordinates) with sensoring ange from -2g to 2g and analog output 0-5V. It costs about $7.95 a piece. SparkFun also sales ADXL322 breakout board. The breakout board will save a lot of wiring effort, however, it will cost $29.95, 3 times as pricy as the accelerometer alone.

Approximate Cost

  • accelerometer: $7.95
  • LED matrix: $4.5
  • LED driver: $7.04

Total: $19.49 (shipping not included)