const int dataPin = 11; // DS - Data ingång för båda shiftregistren
const int clockPin = 13; // SH_CP - Shift Clock
const int latchPin = 12; // ST_CP - Storage Clock
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}
void loop() {
for (int row = 0; row < 8; row++) {
// Aktivera endast en rad åt gången
byte rowData = ~(1 << row); // En bit satt till noll i taget för varje rad (negation för att få rätt logik)
for (int col = 0; col < 8; col++) {
byte colData = 1 << col; // Tänder en kolumn åt gången
// Skicka data till shiftregistren
updateShiftRegisters(rowData, colData);
delay(200); // Vänta så att vi ser varje LED tändas
}
}
}
void updateShiftRegisters(byte rowData, byte colData) {
digitalWrite(latchPin, LOW); // Förbered för att skicka data
// Skicka raddata först (andra shiftregistret)
shiftOut(dataPin, clockPin, MSBFIRST, rowData);
// Skicka kolumndata (första shiftregistret)
shiftOut(dataPin, clockPin, MSBFIRST, colData);
digitalWrite(latchPin, HIGH); // Lås in och visa data
}