There's a discussion on how to do this at http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1155067315, and it points to the appropriate wiring diagram on page 8 in the 4794 datasheet and mentions a modification to the code which I think is insufficient to make the circuit work.
The diagram says to connect the strobe, clock and output enable pins from the first 4794 to the same pins on the second 4794, and run the data into the first 4794 thru the data pin (2), then connect the second 4794's data pin to the first 4794's Serial Output pin (10). The makes sense, and daisychaining more 4794's would simply be a matter of connecting the succeeding 4794's data pin to the previous 4794's Serial Output pin.
It's the code part that doesn't make sense to me. Auguste was good enough to suggest in that thread:
"You must modify the program to control new leds. You need more PulseClock(). You can extend the for loop (up 16 with 2 x 4794) and change : if (count == 7){ to if (count == 15){."
However, that doesn't seem to work for me, perhaps because I have no idea how much more PulseClock() would be required. What's missing for me is an understanding of how strobe, clock, and output enable actually work in this situation. I haven't been able to find a cogent explanation of the whole idea of strobe/clock/output enable anywhere else on the web and I feel like its a fundamental kind of thing that until you get it, it's all just a shot in the dark trying to make it work.
Anyone have any suggestion on where I might find this information, or can help me with correct code to get at least two 4794's to work?
The strobe line transfers the data you have clocked into the shift register onto the output latches, it's the output latches that connect to the outside world. So strobe should be pulsed once at the end of sending the clock pulses.
You send 8 clock pulses for each daisy chained 4749, so that's 16 if you have two.
The first bit you clock in ends up at the very end of the shift register.
The output enable activates the output. The outputs will be on all the time if this is high. If it is fed by a pulse width modulated signal (PWM) then this turns all the outputs on and off rapidly. The ratio of on to off time then will control the brightness of any LED attached to the output.
Your explanation and some careful re-reading of the 4794 docs really helped clear it up conceptually for me. What you call an output latch – which I am sure is the standard nomenclature – Philips Semiconductors calls a "parallel output (open drain)".
One of the things I didn't get was that there is no internal clock in the 4794, but the clock is provided by the Arduino.
The Arduino sends a HIGH or LOW to the 4794 Data Pin
The Arduino sends a short pulse of LOW, followed by a slightly longer HIGH, then another LOW to the 4794 Clock Pin - effectively 'ticking' the clock - which tells the 4794 to accept the data into its Shift Register.
If the Shift Register gets more than 8 bits of data, it passes the last bit in its register out the Serial Output to the next 4794.
The Arduino does this repeatedly until all the data is sent.
When all the data is sent, the Arduino:
Turns off the Output Enable
Sets the Strobe pin to HIGH
Ticks the clock one cycle
Sets the Strobe pin back to LOW
This pushes the 8 bits of data in the Shift Resgister to the Storage Register.
Then you turn the Output Enable back on, and the LED's display the pattern set by the bits.
I did some extensive commenting to my Arduino Code and drew up a circuit diagram on my course web-site Khazar.com. Perhaps it will help others who find themselves as befuddled as I did...