#include <SPI.h>
#define DATA 2
#define SHIFT 3
#define STORE 4
int delayTime = 1, timer, timerPrev=0;
int shift=0;
int len=120;
void store();
int pic[] = {
36,36,66,66,36};
void setup() {
SPI.begin();
pinMode(DATA, OUTPUT);
pinMode(SHIFT, OUTPUT);
pinMode(STORE, OUTPUT);
}
void loop() {
for (int i=0; i<8; i++) {
shiftOut(DATA, SHIFT, LSBFIRST, pic[i]);
shiftOut(DATA, SHIFT, LSBFIRST, 128 >> i);
store();
timer = millis();
if (timer-timerPrev>50){
shift++;
if (shift==len)shift=0;
timerPrev=timer;
}
for(int i=0; i<8; i++){
digitalWrite(STORE, LOW);
SPI.transfer(1 << i);
SPI.transfer(pic[i+shift > len-1 ? i+shift-len : i+shift]);
digitalWrite(STORE, HIGH);
delay(delayTime);
}
store();
}
}
void store() {
digitalWrite(STORE, HIGH);
delayMicroseconds(10);
digitalWrite(STORE, LOW);
delayMicroseconds(10);
}