#define number_of_74hc595s 4
#define numOfRegisterPins (number_of_74hc595s * 8)
//#define dataPin 16
//#define latchPin 2
//#define clockPin 4
#define dataPin 4
#define latchPin 6
#define clockPin 5
bool DirectionState = true; // MSBFIRST
void updateShiftRegister(uint32_t leds, bool isMSBFIRST = true) {
byte b0 = leds & 0xFF;
byte b1 = (leds >> 8) & 0xFF;
byte b2 = (leds >> 16) & 0xFF;
byte b3 = (leds >> 24) & 0xFF;
digitalWrite(latchPin, LOW);
if (isMSBFIRST) {
shiftOut(dataPin, clockPin, MSBFIRST, b3);
shiftOut(dataPin, clockPin, MSBFIRST, b2);
shiftOut(dataPin, clockPin, MSBFIRST, b1);
shiftOut(dataPin, clockPin, MSBFIRST, b0);
} else {
shiftOut(dataPin, clockPin, LSBFIRST, b0);
shiftOut(dataPin, clockPin, LSBFIRST, b1);
shiftOut(dataPin, clockPin, LSBFIRST, b2);
shiftOut(dataPin, clockPin, LSBFIRST, b3);
}
digitalWrite(latchPin, HIGH);
}
void setup() {
Serial.begin(115200);
Serial.println(F("Initialize System"));
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
for (int i = 0; i < numOfRegisterPins; i++) {
Serial.println(i);
uint32_t test = (1UL << i);
updateShiftRegister(test, DirectionState);
delay(1000); // 1 másodperc
}
/*uint32_t test = (1UL << 1);
updateShiftRegister(test, DirectionState);*/
}