Ich hab noch nicht mit mehreren Schieberegistern gearbeitet, daher ist der folgende Code ohne Gewähr.
So hab ich das verstanden:Code:long data = 0; // alle Bits aus -> alle LEDs aus void loop() { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, data >>16); shiftOut(dataPin, clockPin, MSBFIRST, data >>8); shiftOut(dataPin, clockPin, MSBFIRST, data); digitalWrite(latchPin, HIGH); data = (data<<1)+1; if (data > 1048576) data = 0; // 1048576 = 2^20 delay(1000); }
Lesezeichen