int dataPin = 1; // к выводу 14 регистра DS
int clockPin = 2; // к выводу 11 регистра (SH_CP)
int latchPin = 0; // к выводу 12 регистра (ST_CP)
int PIN_RELAY= 4; // управление реле
int pause=1000; // интервал переключения цифр
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, LOW);
digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void PritNum(int num){
digitalWrite(latchPin, LOW); // начинаем передачу данных
switch(num){
case 0:
shiftOut(dataPin, clockPin, LSBFIRST, 0b10001000^0b00001000);break;
case 1:
shiftOut(dataPin, clockPin, LSBFIRST, 0b11101011);break;
case 2:
shiftOut(dataPin, clockPin, LSBFIRST, 0b01001100);break;
case 3:
shiftOut(dataPin, clockPin, LSBFIRST, 0b01001001);break;
case 4:
shiftOut(dataPin, clockPin, LSBFIRST, 0b00101011);break;
case 5:
shiftOut(dataPin, clockPin, LSBFIRST, 0b00011001);break;
case 6:
shiftOut(dataPin, clockPin, LSBFIRST, 0b00011000);break;
case 7:
shiftOut(dataPin, clockPin, LSBFIRST, 0b11001011);break;
case 8:
shiftOut(dataPin, clockPin, LSBFIRST, 0b00001000);break;
case 9:
shiftOut(dataPin, clockPin, LSBFIRST, 0b00001001);break;
}
digitalWrite(latchPin, HIGH); // прекращаем передачу данных
}
void loop() {
for (int counter = 9; counter >=0; counter -- ) {
PritNum(counter);
pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
if (counter==0){
digitalWrite(PIN_RELAY, HIGH);
};
if (counter!=0){
digitalWrite(PIN_RELAY, LOW);
};
delay(pause);
}
}