int latchPin = 10;
int clockPin = 12;
int dataPin = 11;
int butPin = 13;
int mode = 4;
char inputString[2];
int delayConst = 250;
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(butPin, INPUT_PULLUP);
Serial.begin(9600);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
delay(2000);
}
void loop() {
if (mode == 0) {
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111111);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111111);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111111);
digitalWrite(latchPin, HIGH);
}
if (mode == 1) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b01010101);
shiftOut(dataPin, clockPin, LSBFIRST, 0b01010101);
shiftOut(dataPin, clockPin, LSBFIRST, 0b01010101);
digitalWrite(latchPin, HIGH);
delay(delayConst);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b10101010);
shiftOut(dataPin, clockPin, LSBFIRST, 0b10101010);
shiftOut(dataPin, clockPin, LSBFIRST, 0b10101010);
digitalWrite(latchPin, HIGH);
delay(delayConst);
}
if (mode == 2) {
int byteToSend = 0;
for (int i = 0; i < 24; i++) {
if (i < 4) {
byteToSend = 0;
bitWrite(byteToSend, i, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, byteToSend);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
}
if ((i < 8) && (i > 3)) {
byteToSend = 0;
bitWrite(byteToSend, i, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, byteToSend);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
delay(delayConst/3);
}
if ((i < 16) && (i > 7)) {
byteToSend = 0;
bitWrite(byteToSend, i-8, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, LSBFIRST, byteToSend);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
delay(delayConst/3);
}
if ((i < 24) && (i > 15)) {
byteToSend = 0;
bitWrite(byteToSend, i-16, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, LSBFIRST, byteToSend);
digitalWrite(latchPin, HIGH);
delay(delayConst/3);
}
}
}
if (mode == 3) {
int byteToSend = 0;
for (int i = 0; i < 24; i++) {
if (i < 8) {
byteToSend = 0;
bitWrite(byteToSend, i, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, MSBFIRST, byteToSend);
digitalWrite(latchPin, HIGH);
delay(delayConst/3);
}
if ((i < 16) && (i > 7)) {
byteToSend = 0;
bitWrite(byteToSend, i-8, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, MSBFIRST, byteToSend);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
delay(delayConst/3);
}
if ((i < 20) && (i > 15)) {
byteToSend = 0;
bitWrite(byteToSend, i-16, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, byteToSend);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
delay(delayConst/3);
}
}
}
if (mode == 4) {
int byteToSend_1 = 0;
int byteToSend_2 = 0;
int byteToSend_3 = 0;
int randState = 0;
for (int i = 0; i < 24; i++){
if (i < 8) {
randState = random (0, 2);
bitWrite(byteToSend_1, i, randState);
}
if ((i < 16) && (i > 7)) {
randState = random (0, 2);
bitWrite(byteToSend_2, i-8, randState);
}
if ((i < 24) && (i > 15)) {
randState = random (0, 2);
bitWrite(byteToSend_3, i-16, randState);
}
}
digitalWrite(latchPin, LOW);
delay(delayConst);
shiftOut(dataPin, clockPin, MSBFIRST, byteToSend_1);
shiftOut(dataPin, clockPin, MSBFIRST, byteToSend_2);
shiftOut(dataPin, clockPin, MSBFIRST, byteToSend_3);
digitalWrite(latchPin, HIGH);
delay(delayConst);
}
}