I am trying to controll 16 LED's light using TWO 74HC595 shift registers. (see schematic in attachment).
I am trying to run a simple program in a loop that would turn all the light OFF at the same time and then turn them back on (still in unisome).
Now, when I run my program, this is the result I am getting:
The first 8 light would go off.
The next 8 would go off.
Then the first 8 light would go ON,
The next 8 lights would go ON.
And son on ....
Send 11111111 to the first 595
Delay
Send 00000000 to the first 595, so the second 595 will be 11111111 (as all 8 bits of the first 595 were shifted into the second)
Delay
Send 11111111 to the first 595, so the second 595 will be 00000000 (as all 8 bits of the first 595 were shifted into the second)
etc...
Solution :
You have to change the data type to a 16 bits type (uint16_t), and call shiftOut twice, each with half the bits of your 16 bits of data
Send 11111111 to the first 595
Delay
Send 00000000 to the first 595, so the second 595 will be 11111111 (as all 8 bits of the first 595 were shifted into the second)
Delay
Send 11111111 to the first 595, so the second 595 will be 00000000 (as all 8 bits of the first 595 were shifted into the second)
etc...
Solution :
You have to change the data type to a 16 bits type (uint16_t), and call shiftOut twice, each with half the bits of your 16 bits of data
Add 0.1uF caps from the '595 VCC pins to Gnd.
I don't see pin 9 from one chip going to 14 on the other, that is needed to pass the data from device to device.