//Пин подключен к ST_CP входу 74HC595 int latchPin = 10; //Пин подключен к SH_CP входу 74HC595 int clockPin = 12; //Пин подключен к DS входу 74HC595 int dataPin = 11; // Кнопка увеличения таймера int btn_up = 2; bool status_btn_up = false; // Кнопка уменьшения таймера int btn_down = 3; bool status_btn_down = false; // Кнопка старта/паузы int btn_select = 4; bool status_btn_select = false; // Кнопка 1 игрока int btn_red_1 = 5; // положение кнопки bool status_btn_red_1 = false; // Кнопка 2 игрока int btn_red_2 = 7; // положение кнопки bool status_btn_red_2 = false; // пин пищалки int pin_beep = 9; // Светодиод 1 int led_1 = 6;//A0; // Светодиод 2 int led_2 = 8;//A1; // количество секонд в таймере, по умолчанию 5 сек int countSeconds = 5; // флаг таймера, запущен или нет bool startGame = false; // отсчет итераций, считаем милисекунды, по 100 за итерацию int timer = 0; // количество установленых секунд для таймера int currentSec = 5; // функция вывода цифры на 7-сегментом индикаторе void writeNum(int num){ byte arrayNums[] = { B10111111, B00001100, B01011011, B01011110, B01101100, B01110110, B01110111, B00011100, B11111111, B11111110 }; digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, arrayNums[num]); digitalWrite(latchPin, HIGH); } // функция пищалки void beep(unsigned char delayms){ analogWrite(pin_beep, 20); delay(delayms); analogWrite(pin_beep, 0); delay(delayms); } void setup() { // настрока пинов pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(btn_up, INPUT); pinMode(btn_down, INPUT); pinMode(btn_select, INPUT); digitalWrite(btn_up, LOW); digitalWrite(btn_down, LOW); digitalWrite(btn_select, LOW); pinMode(led_1, OUTPUT); pinMode(led_2, OUTPUT); digitalWrite(led_1, LOW); digitalWrite(led_2, LOW); pinMode(pin_beep, OUTPUT); } void loop() { if(startGame){ writeNum(currentSec); }else{ writeNum(countSeconds); } if(digitalRead(btn_up)){ if(!status_btn_up) { if(countSeconds < 9) countSeconds++; } status_btn_up = true; }else{ status_btn_up = false; } if(digitalRead(btn_down)){ if(!status_btn_down){ if(countSeconds > 1) countSeconds--; } status_btn_down = true; }else{ status_btn_down = false; } if(digitalRead(btn_select)){ if(!status_btn_select){ startGame = !startGame; timer = 0; currentSec = countSeconds; if(startGame){ digitalWrite(led_1, HIGH); digitalWrite(led_2, LOW); }else{ digitalWrite(led_1, LOW); digitalWrite(led_2, LOW); } } status_btn_select = true; }else{ status_btn_select = false; } if(startGame){ timer++; // прошла секунда if(timer > 10){ timer = 0; if(currentSec > 0) { currentSec--; beep(50); } } if(currentSec == 0){ beep(50); } if(digitalRead(btn_red_1)){ if(!status_btn_red_1) { timer = 0; currentSec = countSeconds; digitalWrite(led_1, LOW); digitalWrite(led_2, HIGH); } status_btn_red_1 = true; }else{ status_btn_red_1 = false; } if(digitalRead(btn_red_2)){ if(!status_btn_red_2) { timer = 0; currentSec = countSeconds; digitalWrite(led_1, HIGH); digitalWrite(led_2, LOW); } status_btn_red_2 = true; }else{ status_btn_red_2 = false; } } delay(100); }