// pin připojen na RCLK registru (12)
int latchPin = 3;
//Pin connected to SRCLK registru (11)
int clockPin = 4;
////Pin připojen na Data pin registu (14)
int dataPin = 2;
// data uložená v poli
// v binární soustavě pro větší
// přehlednost
byte data[] =
{
B10000000,B00000000,
B00000000,B00000000,
B00100000,B00000000,
B00010000,B00000000,
B00001000,B00000000,
B00000100,B00000000,
B00000010,B00000000,
B00000001,B00000000,
B00000000,B10000000,
B00000000,B01000000,
B00000000,B00100000,
B00000000,B00010000,
B00000000,B00001000,
B00000000,B00000100,
B00000000,B00000010,
B00000000,B00000001,
B00000000,B00000011,
B00000000,B00000111,
B00000000,B00001111,
B00000000,B00011111,
B00000000,B00111111,
B00000000,B01111111,
B00000000,B11111111,
B00000001,B11111111,
B00000011,B11111111,
B00000111,B11111111,
B00011111,B11111111,
B00111111,B11111111,
B01111111,B11111111,
B11111111,B11111111
};
void setup() {
// nastaví naše piny pro regist na výstupní
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
// funkce projde všechny byte v poli data
for (int index = 0; index < sizeof(data); index = index + 2) {
// když dáme latchPin na LOW mužeme
// do registru poslat data
digitalWrite(latchPin, LOW);
// a to pomocí funkce shiftOut pro 1. registr
shiftOut(dataPin, clockPin, MSBFIRST, data[index]);
// pro 2. registr
shiftOut(dataPin, clockPin, MSBFIRST, data[index + 1]);
// jakmile dáme latchPin na HIGH,
// data se objeví na výstupu
digitalWrite(latchPin, HIGH);
// počká 50ms, aby to nefrčelo moc rychle
delay(50);
}
}