And now this brings me to where I need help:
I am using these universal parallel in/parallel out shift registers to control RGB LED's.
74ACT299PC 74ACT299PC pdf, 74ACT299PC Description, 74ACT299PC Datasheet, 74ACT299PC view ::: ALLDATASHEET :::
And here is a schematic of how I have everything configured:
I attached the image to save space.
Now when I do simple chase sequences in my prototype assembly, I'm seeing a lot of flickering from the LEDs that are supposed to be off while the sequence is running. My understanding of the operation of the universal shift register is that when using it in the serial in/parallel out mode, the data is shown on the output as soon as it is pushed through each stage on the rising edge of the clock. And since is there is no latch pin to control when to show the LEDs, this would explain what is happening. But, I also thought that it might be decoupling. I haven't gotten to the decoupling part of my studies yet, and if it is, then I'm okay with getting to that part to understand what I need to fix the problem (instead of asking for a quick fix answer that I don't understand). But, if this is the normal function of the universal shift register and I've done everything correct, then I am a bit saddened, because this won't work for my LED applications. And, that's okay because I'm sure I can find an use for them. Just not what I want for right now.
So my questions are: Is what I'm seeing just the normal operation of the universal shift register? There is no latch pin so this is it? Thoughts? Suggestions?
So, here is a video of what I'm seeing:
I've got the LED inside of a ping pong ball and you can see that its flashing with the Red LED very quickly and then you'll see it come on at full light as the sequence runs through the LED. Then I pan over to the other LEDs and you can see the chase sequence working but when the LEDs are off they are flickering pretty strongly.
And here is the code that I've written. I understand that it's not the most elegant code but it works which is good enough for now. I apologize that it's not labeled and commented accordingly.
int datapin = 3;
int clockpin = 4;
int timer = 150;
byte MyArray11a[] = {0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
byte MyArray12a[] = {1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
byte MyArray13a[] = {1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1};
byte MyArray14a[] = {1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1};
byte MyArray15a[] = {1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1};
byte MyArray16a[] = {1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0};
byte MyArray17a[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1};
byte MyArray18a[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1};
void setup(){
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}
void loop(){
//---------------------------------------Output Array Values
// The for loop cycles through each value in the 24-value array and sends that data
// to the shift register on the rising edge of the clock. Repeat 24 times then exit
// the for loop and move to the next one.
for(int x = 24; x >= 0; x--){
digitalWrite(datapin, MyArray11a[x]);
digitalWrite(clockpin, HIGH);
digitalWrite(clockpin, LOW);
}
delay(timer);
//-------------------------------------Output next array
for(int x = 24; x >= 0; x--){
digitalWrite(datapin, MyArray12a[x]);
digitalWrite(clockpin, HIGH);
digitalWrite(clockpin, LOW);
}
delay(timer);
//-------------------------------------Output next array
for(int x = 24; x >= 0; x--){
digitalWrite(datapin, MyArray13a[x]);
digitalWrite(clockpin, HIGH);
digitalWrite(clockpin, LOW);
}
delay(timer);
//-------------------------------------Output next array
for(int x = 24; x >= 0; x--){
digitalWrite(datapin, MyArray14a[x]);
digitalWrite(clockpin, HIGH);
digitalWrite(clockpin, LOW);
}
delay(timer);
//-------------------------------------Output next array
for(int x = 24; x >= 0; x--){
digitalWrite(datapin, MyArray15a[x]);
digitalWrite(clockpin, HIGH);
digitalWrite(clockpin, LOW);
}
delay(timer);
//-------------------------------------Output next array
for(int x = 24; x >= 0; x--){
digitalWrite(datapin, MyArray16a[x]);
digitalWrite(clockpin, HIGH);
digitalWrite(clockpin, LOW);
}
delay(timer);
//-------------------------------------Output next array
for(int x = 24; x >= 0; x--){
digitalWrite(datapin, MyArray17a[x]);
digitalWrite(clockpin, HIGH);
digitalWrite(clockpin, LOW);
}
delay(timer);
//-------------------------------------Output next array
for(int x = 24; x >= 0; x--){
digitalWrite(datapin, MyArray18a[x]);
digitalWrite(clockpin, HIGH);
digitalWrite(clockpin, LOW);
}
delay(timer);
}
Schematic Design_ 74ACT299PC - Working Assembly.pdf (63.2 KB)