#define DATA 6
#define LATCH 8
#define CLOCK 10
#define button 2
byte byteTOSend = 0;
int seq[7] = {1,2,4,8,16,32,64};
int flag=0;
void setup() {
pinMode(LATCH, OUTPUT);
pinMode(CLOCK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(button, INPUT_PULLUP);
attachInterrupt(0, button_press, FALLING);
digitalWrite(LATCH, HIGH);
}
void loop() {
byteTOSend = 0;
switch (flag) {
case 0:
for (byte bitPOS = 0; bitPOS < 8; bitPOS++) {
byteTOSend = 0;
bitWrite(byteTOSend, bitPOS, HIGH);
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, byteTOSend);
digitalWrite(LATCH, HIGH);
delay(300);
}
break;
case 1:
for (byte bitPOS = 0; bitPOS < 8; bitPOS++) {
bitWrite(byteTOSend, bitPOS, HIGH);
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, byteTOSend);
digitalWrite(LATCH, HIGH);
delay(100);
}
delay(50);
for (int bitPOS = 0; bitPOS < 8; bitPOS++) {
bitWrite(byteTOSend, bitPOS, LOW);
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, byteTOSend);
digitalWrite(LATCH, HIGH);
delay(100);
}
break;
case 2:
for (byte bitPOS = 0; bitPOS < 8; bitPOS++) {
bitWrite(byteTOSend, bitPOS, HIGH);
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, byteTOSend);
digitalWrite(LATCH, HIGH);
delay(100);
}
delay(50);
for (int bitPOS = 0; bitPOS < 8; bitPOS++) {
bitWrite(byteTOSend, bitPOS, LOW);
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, byteTOSend);
digitalWrite(LATCH, HIGH);
delay(100);
}
break;
case 3:
for (byte bitPOS = 0; bitPOS < 8; bitPOS++) {
byteTOSend = 0;
bitWrite(byteTOSend, bitPOS, HIGH);
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, byteTOSend);
digitalWrite(LATCH, HIGH);
delay(100);
}
for (byte bitPOS = 0; bitPOS < 8; bitPOS++) {
byteTOSend = 0;
bitWrite(byteTOSend, bitPOS, HIGH);
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, byteTOSend);
digitalWrite(LATCH, HIGH);
delay(100);
}
break;
case 4: //пятый режим
byteTOSend = 170;
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, byteTOSend);
digitalWrite(LATCH, HIGH);
delay(300);
byteTOSend = ~byteTOSend;
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, byteTOSend);
digitalWrite(LATCH, HIGH);
delay(300);
break;
case 5:
for (int i = 0; i < 14; i++) {
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, seq[i]);
digitalWrite(LATCH, HIGH);
delay(100);
}
break;
}
}
void button_press(){
flag+=1;
if (flag>=6)
{flag=0;}
}