Hi
I want to control 32 LEDs using shift registers but the bits I send through the shift registers don't go further then the second shift register. Can somebody please take a look at my code? I tried changing the shiftOut function but that didn't help. I'm using 74HC595 8-bit shift registers. Here's my code:
int masterClear = 13;
int clockPin = 12;
int latchPin = 11;
int outputEnable = 6;
int dataPin = 5;
byte dataCA;
byte dataRED;
byte dataBLUE;
byte dataGREEN;
byte dataArrayCA[8];
byte dataArrayRED[8];
byte dataArrayBLUE[8];
byte dataArrayGREEN[8];
void setup() {
pinMode(masterClear, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(outputEnable, OUTPUT);
pinMode(dataPin, OUTPUT);
dataArrayCA[0] = 0xFF;
dataArrayCA[1] = 0xFF;
dataArrayCA[2] = 0xFF;
dataArrayCA[3] = 0xFF;
dataArrayCA[4] = 0xFF;
dataArrayCA[5] = 0xFF;
dataArrayCA[6] = 0xFF;
dataArrayCA[7] = 0xFF;
dataArrayRED[0] = 0x38;
dataArrayRED[1] = 0x1C;
dataArrayRED[2] = 0x0E;
dataArrayRED[3] = 0x07;
dataArrayRED[4] = 0x83;
dataArrayRED[5] = 0xC1;
dataArrayRED[6] = 0xE0;
dataArrayRED[7] = 0x70;
dataArrayBLUE[0] = 0xE3;
dataArrayBLUE[1] = 0xF1;
dataArrayBLUE[2] = 0xF8;
dataArrayBLUE[3] = 0x7C;
dataArrayBLUE[4] = 0x3E;
dataArrayBLUE[5] = 0x1F;
dataArrayBLUE[6] = 0x8F;
dataArrayBLUE[7] = 0xC7;
dataArrayGREEN[0] = 0x8E;
dataArrayGREEN[1] = 0x47;
dataArrayGREEN[2] = 0xA3;
dataArrayGREEN[3] = 0xD1;
dataArrayGREEN[4] = 0xE8;
dataArrayGREEN[5] = 0x74;
dataArrayGREEN[6] = 0x3A;
dataArrayGREEN[7] = 0x1D;
}
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val)
{
uint8_t i;
for (i = 0; i < 8; i++) {
if (bitOrder == LSBFIRST)
digitalWrite(dataPin, !!(val & (1 << i)));
else
digitalWrite(dataPin, !!(val & (1 << (7 - i))));
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
}
void loop(){
digitalWrite(masterClear, HIGH);
digitalWrite(outputEnable, LOW);
for (int j = 0; j < 8; j++) {
dataCA = dataArrayCA[j];
dataRED = dataArrayRED[j];
dataBLUE = dataArrayBLUE[j];
dataGREEN = dataArrayGREEN[j];
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, dataCA);
shiftOut(dataPin, clockPin, MSBFIRST, dataGREEN);
shiftOut(dataPin, clockPin, MSBFIRST, dataBLUE);
shiftOut(dataPin, clockPin, MSBFIRST, dataRED);
digitalWrite(latchPin, HIGH);
delay(1000);
}
}
Test 74HC5951.ino (2.23 KB)