Struggling with shift registers

A project log for Trinket Probe

Inspired by the Superprobe and tiq projects, and a comment on the contest announcement suggesting a Superprobe-esque project

PointyOintmentPointyOintment 12/30/2014 at 08:540 Comments

I've got four 74HC595s on a breadboard, and I'm trying to get them to drive the 14-segment display. All I've gotten so far, though, is garbage data going through them. At first, I couldn't get them to accept data at all. Then, for some reason, they started accepting data, but nothing was displayed. I eventually figured out that this was because the display is common cathode, and I'd hooked it up as common anode—I thought I'd tried it earlier as common cathode and discovered it was really common anode, but I guess I didn't. Anyway, it sometimes lights up random-seeming segments now, if I'm lucky. The procedure I'm following is to either clock in bits using the buttons on the breadboard or use shiftOut() on my Arduino, then press the latch button, then press each /OE button individually to see what each pair of shift registers contains. Unfortunately, right now, they're only lighting up the discrete LED I hooked up to make 16 LEDs connected to each pair of shift registers.

Someone on the Arduino forums mentioned shiftOut() being too fast for 595s (though the datasheet says they should be fine well above the Arduino's clock frequency), and the failure when I was clocking in data manually could have been because the buttons aren't debounced at all. Not sure. I will have to take it to my hackerspace and use the logic analyzer.