const uint8_t IMAGES[][8] = {
{
0b00000000,
0b00111100,
0b01100110,
0b01100110,
0b01111110,
0b01100110,
0b01100110,
0b01100110
},{
0b00000000,
0b01111100,
0b01100110,
0b01100110,
0b01111100,
0b01100110,
0b01100110,
0b01111100
},{
0b00000000,
0b00111100,
0b01100110,
0b01100000,
0b01100000,
0b01100000,
0b01100110,
0b00111100
},{
0b00000000,
0b01111100,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b01111100
},{
0b00000000,
0b01111110,
0b01100000,
0b01100000,
0b01111100,
0b01100000,
0b01100000,
0b01111110
},{
0b00000000,
0b01111110,
0b01100000,
0b01100000,
0b01111100,
0b01100000,
0b01100000,
0b01100000
},{
0b00000000,
0b00111100,
0b01100110,
0b01100000,
0b01100000,
0b01101110,
0b01100110,
0b00111100
},{
0b00000000,
0b01100110,
0b01100110,
0b01100110,
0b01111110,
0b01100110,
0b01100110,
0b01100110
},{
0b00000000,
0b00111100,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00111100
},{
0b00000000,
0b00011110,
0b00001100,
0b00001100,
0b00001100,
0b01101100,
0b01101100,
0b00111000
},{
0b00000000,
0b01100110,
0b01101100,
0b01111000,
0b01110000,
0b01111000,
0b01101100,
0b01100110
},{
0b00000000,
0b01100000,
0b01100000,
0b01100000,
0b01100000,
0b01100000,
0b01100000,
0b01111110
},{
0b00000000,
0b01100011,
0b01110111,
0b01111111,
0b01101011,
0b01100011,
0b01100011,
0b01100011
},{
0b00000000,
0b01100011,
0b01110011,
0b01111011,
0b01101111,
0b01100111,
0b01100011,
0b01100011
},{
0b00000000,
0b00111100,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b00111100
},{
0b00000000,
0b01111100,
0b01100110,
0b01100110,
0b01100110,
0b01111100,
0b01100000,
0b01100000
},{
0b00000000,
0b00111100,
0b01100110,
0b01100110,
0b01100110,
0b01101110,
0b00111100,
0b00000110
},{
0b00000000,
0b01111100,
0b01100110,
0b01100110,
0b01111100,
0b01111000,
0b01101100,
0b01100110
},{
0b00000000,
0b00111100,
0b01100110,
0b01100000,
0b00111100,
0b00000110,
0b01100110,
0b00111100
},{
0b00000000,
0b01111110,
0b01011010,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000
},{
0b00000000,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b00111110
},{
0b00000000,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b00111100,
0b00011000
},{
0b00000000,
0b01100011,
0b01100011,
0b01100011,
0b01101011,
0b01111111,
0b01110111,
0b01100011
},{
0b00000000,
0b01100011,
0b01100011,
0b00110110,
0b00011100,
0b00110110,
0b01100011,
0b01100011
},{
0b00000000,
0b01100110,
0b01100110,
0b01100110,
0b00111100,
0b00011000,
0b00011000,
0b00011000
},{
0b00000000,
0b01111110,
0b00000110,
0b00001100,
0b00011000,
0b00110000,
0b01100000,
0b01111110
},{
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000
},{
0b00000000,
0b00000000,
0b00000000,
0b00111100,
0b00000110,
0b00111110,
0b01100110,
0b00111110
},{
0b00000000,
0b01100000,
0b01100000,
0b01100000,
0b01111100,
0b01100110,
0b01100110,
0b01111100
},{
0b00000000,
0b00000000,
0b00000000,
0b00111100,
0b01100110,
0b01100000,
0b01100110,
0b00111100
},{
0b00000000,
0b00000110,
0b00000110,
0b00000110,
0b00111110,
0b01100110,
0b01100110,
0b00111110
},{
0b00000000,
0b00000000,
0b00000000,
0b00111100,
0b01100110,
0b01111110,
0b01100000,
0b00111100
},{
0b00000000,
0b00011100,
0b00110110,
0b00110000,
0b00110000,
0b01111100,
0b00110000,
0b00110000
},{
0b00000000,
0b00000000,
0b00111110,
0b01100110,
0b01100110,
0b00111110,
0b00000110,
0b00111100
},{
0b00000000,
0b01100000,
0b01100000,
0b01100000,
0b01111100,
0b01100110,
0b01100110,
0b01100110
},{
0b00000000,
0b00000000,
0b00011000,
0b00000000,
0b00011000,
0b00011000,
0b00011000,
0b00111100
},{
0b00000000,
0b00001100,
0b00000000,
0b00001100,
0b00001100,
0b01101100,
0b01101100,
0b00111000
},{
0b00000000,
0b01100000,
0b01100000,
0b01100110,
0b01101100,
0b01111000,
0b01101100,
0b01100110
},{
0b00000000,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000
},{
0b00000000,
0b00000000,
0b00000000,
0b01100011,
0b01110111,
0b01111111,
0b01101011,
0b01101011
},{
0b00000000,
0b00000000,
0b00000000,
0b01111100,
0b01111110,
0b01100110,
0b01100110,
0b01100110
},{
0b00000000,
0b00000000,
0b00000000,
0b00111100,
0b01100110,
0b01100110,
0b01100110,
0b00111100
},{
0b00000000,
0b00000000,
0b01111100,
0b01100110,
0b01100110,
0b01111100,
0b01100000,
0b01100000
},{
0b00000000,
0b00000000,
0b00111100,
0b01101100,
0b01101100,
0b00111100,
0b00001101,
0b00001111
},{
0b00000000,
0b00000000,
0b00000000,
0b01111100,
0b01100110,
0b01100110,
0b01100000,
0b01100000
},{
0b00000000,
0b00000000,
0b00000000,
0b00111110,
0b01000000,
0b00111100,
0b00000010,
0b01111100
},{
0b00000000,
0b00000000,
0b00011000,
0b00011000,
0b01111110,
0b00011000,
0b00011000,
0b00011000
},{
0b00000000,
0b00000000,
0b00000000,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b00111110
},{
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b01100110,
0b01100110,
0b00111100,
0b00011000
},{
0b00000000,
0b00000000,
0b00000000,
0b01100011,
0b01101011,
0b01101011,
0b01101011,
0b00111110
},{
0b00000000,
0b00000000,
0b00000000,
0b01100110,
0b00111100,
0b00011000,
0b00111100,
0b01100110
},{
0b00000000,
0b00000000,
0b00000000,
0b01100110,
0b01100110,
0b00111110,
0b00000110,
0b00111100
},{
0b00000000,
0b00000000,
0b00000000,
0b00111100,
0b00001100,
0b00011000,
0b00110000,
0b00111100
}};
const int IMAGES_LEN = sizeof(IMAGES)/8;
uint8_t colPins[8] = { 2, 3, 4, 5, 6, 7, 8, 9};
#define SER_PIN 10
#define SCK_PIN 11
#define RCK_PIN 12
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(colPins[i], OUTPUT);
}
pinMode(SER_PIN, OUTPUT);
pinMode(SCK_PIN, OUTPUT);
pinMode(RCK_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
// iterate each row
for (int i = 0; i < IMAGES_LEN; i++) {
for (int j = 0; j < 100; j++) {
int rowbits = 0x80;
for (int row = 0; row < 8; row++) {
for (int k = 0; k < 8; k++)
digitalWrite(colPins[k], LOW); // Cleanup cols
writeData(rowbits); // prepare to write the row
for (int col = 0; col < 8; col++)
digitalWrite(colPins[7 - col], IMAGES[i][row] & 1 << col ? HIGH : LOW );
delay(1);
writeData(0);
rowbits >>= 1;
}
}
}
}
void writeData(byte data) {
digitalWrite(RCK_PIN, LOW);
shiftOut(SER_PIN, SCK_PIN, LSBFIRST, data);
digitalWrite(RCK_PIN, HIGH);
}