arduino duemilanove - 8x8 matrix

OBS: english is not my native language, so please be kind
Hello first of all im a newbie :-/
Im doing a projekt in class, we need to setup up and program an 8x8 LED matrix

we've got
-arduino duemilanove
-2 shift register 595
-and all the necessary LED(diodes) for a 8 x 8 matrix
-breadboard
-jumperwires
-and some brain i hope :smiley:

The arduino doesn't have enough pins , so we need shift registers, and that's the problem

the problem is how should we program an 8x8 matrix through shift registers.

If you could help us by explaining some of the code needed or just give a link that does.

Best regards Lurexx ;D

Think of it as a chessboard. How do you determine where a certain figurine is on the board ? Once that is clear, you will know what the shift registers should do.

There is a tutorial in the playground wiki BTW.

Hi

I'm having the same problem as well. I understand the 'chessboard' principle, and have some schematics as well, but I don't know how to program the Arduino and shift registers to show them.
I've looked but I can't seem to find any code at all. Not even in the Playground... :-/

Well I power by displays like so:
I use one shift register to scan the rows(with the help of some transistors), I do it by creating an array of bytes like so:

byte rows_scan[8]={B10000000,B01000000,B00100000,B00010000,B00001000,B00000100,B00000010,B00000001}

And the second shift register is used for controlling the columns.
This is a very simple way to do it and all it takes is some loops.

use the shift out function to send the binary data from the arduino into the registers, flip the latch and it should pop up

Well I'll try that :stuck_out_tongue:

Didn't know the shiftOut function returned the number as binary.

Tried it and it works great ;D

Thank you :slight_smile:

Thanks for the "guidelines"

We made our own 8 x 8 Dot matrix
All selfmade =)

A pic, on this pic it aint done, but u imagine it
http://i45.tinypic.com/2h55r1s.jpg
(the plate is made on a CNC mashine
The print plate all dont our self inc soldering)

I do it by creating an array of bytes like so:
byte rows_scan[8]={B10000000,B01000000,B00100000,B00010000,B00001000,B00000100,B00000010,B00000001}

There is no need to do this. Simply set the first byte :- row = 0x80;
and use that. Then next time round the loop a simple :- row = row >>1; will generate the next byte in the sequence.