Hello there, I am new around here, and I wanted to see if anyone can help me with the problem I am having. It's driving me crazy and I cannot make sense of it.
I am quite a novice at this kind of thing, but about a month ago I found out about Nixie tubes, and decided I wanted to build my own clock from scratch, so I got an Arduino Uno and a bunch of components, did my research, combined with some programming knowledge from some past messing around, and I have now ALMOST completed my clock.
I have however run into an issue that makes NO sense to me. Now, every tube is controlled by a chip that takes in 4 bits input and outputs to the tube's 10 pins, each of which controls the corresponding digit. The clock needs 6 digits, so that would require 24 pins to control, and the Arduino Uno does not have that many.
So I did some more research and got some 595 shift register chips, figured those out, and I tested one with one tube, everything worked, so I built my entire circuit for the clock and the tubes. Then I wrote a program to run the whole thing, but I got nonsense numbers; I thought I had made some mistake in my program, wrote 2 new programs to do it a different way, no luck.
So I decided to do a sanity check, and I ran into this nonsense: I try to send a byte of data to the shift register, and it displays numbers that make no sense to me.
If I write B00000000, it properly displays 2 0s (one shift register controls 2 4bit in drivers and the corresponding tubes).
But then, if I write B00000001 it displays a 2 digit, which would be a (B00000010). What?
Then I wrote B00000010 and the display showed a 6 digit (B00000110). WHAT? I thought maybe I had wired something incorrectly or read in the wrong order, but where did AN EXTRA 1 come from?!
I then tried B00000011 and the display flat out didn't work, which means that the first 4 bits were displaying a value between 10 and 16 (B00001010-B00001111) (the driver chips obviously can't display more than 9, so if the 4 bits are more than 9 it juts doesn't display anything). Again, teh hell is going on?
Writing B00000100 gave me an 8 digit (B00001000). Writing in B00000101 returned the same error from B00000011, and so did the next two values. Then B00001000 gave me a 9 digit (B00001001), but a B00001001 gave me a 1 digit (00000001).
I REALLY don't understand what in the world is going on. I checked all my wiring and tried to run a single shift register unplugging the other two that were daisy chained to it, nothing, still the weird thing happening.
Does anyone have insight on this? I am so close to finishing my clock, everything else works, but I don't understand what is wrong with the mismatch I get in the shift register output, and it's driving me insane.