Let's Make Robots!

An Intro to arrays

A way to control more LEDs than you have pins in your chip!

Update: I added a video with my grad cap hacked with 64 individually addressed LEDs! This multiplexing/matrixing/array-ing sure is fun :3

This is pretty barebones so far. Be assured, more infomation will be added as I push along.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

First I started with a really basic setup: 16 LEDs controlled by 16 pins. This is great, but leaves no pins left for output! Being limited makes me antsy, so I sat down and figured out how to get more.

Matrices.jpg

Here is the code(first video):

main:

for b0 = 0 to 7
high b0
pause 250
low b0
next b0

for b0 = 0 to 7
high pinsc b0
pause 250
low pinsc b0
next b0

goto main

 

Controlling 16 separate motors/lights/etc. is great and all, but what if you want to do more?

I removed one 8 LED output bank and set up two of the free pins as "enablers". The 8 led pins are pulldown pins, and each enabler pin supplies a logic on/off to a 2N3904 Transistor to supply a +5 voltage.

Matrices__2_.jpg

A small change in code, and we are back in business! (second video)

main:

high pinsc 0
for b0 = 0 to 7
high b0
pause 250
low b0
next b0

low pinsc 0 high pinsc 1

for b0 = 0 to 7
high b0
pause 250
low b0
next b0
low pinsc 1

goto main

 

10 pins to control 16 LEDs? Cool!

This can be worked further. How many can we control with 16 pins?

With mathematics, all you have to do take the total number of pins you can use, divide by two, and then square that number.

With 16 pins: 16/2=8, 8^2=64! That's pretty sweet if you ask me.

This is just with one Picaxe 28x1 chip, what could we use to multiply the out pins with other chips to control a multitude more?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

So many new chips to experiment with!

This walkthrough was mainly to highlight using less pins to get more out with only one chip. Just interesting how many different ways there are to achive this :) 

STOP RESISTING!

You want more chips!

My school as drilled into me finding the cheapest way to achive something. Companies look for that, so I keep training myself that way.

If I wasn't working towards a career in designing circuits, I'd say "to hell with it" and go the easy route :P

For added fun, check out Microchips MCP23016, 23017 or 23018, which is 16port I/O expanders for I2C, capable of 3 different speeds. It also exists in a serial version, which can run faster than the I2C editions:

http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=11034&mid=11&lang=en&pageId=79

Also, you can check out the 74HC595, which is an 8-bit serial latch, but they are output only. There is an equivalent input chip, which I can't remember the name of.

Just the way I like'm!

8ik

Thankies :)
Your breadboard looks so tidy!
I can't stand messes on breadboards... so hard to troubleshoot!

16 leds on each 4 to 16 decoder

one  4 bit counter to control each decoder   (two counters in each 7459 package)

cascade the counters 

--> 1 pin to count

--> 1 pin to reset 

 

My only concern is speed ,  but there are chips running upto 100Mhz

I agree that without additional hardware (what are all those chips? you only need the picaxe :/) 16 pins can control 64 leds if those pins can only go high or low. Because picaxe pins can also go high impedance (input) it is possible to do more. This is called Charlieplexing. If you have n number of pins then you can control n(n-1) LEDs from a pic proccesor. This method does have limits to size.

Using additional hardware such as the 4 to 16 decoder suggested by buhatki or serial in/parallel out ICs such as the 74hc164 your only limited by how fast you can update the display.