// Подключаем библиотеку для работы с дисплеем #include // номер аналогового пина пищалки #define POT_PIN A0 // номер цифрового пина пищалки #define BUZZER_PIN 2 // номер цифрового пина кнопки #define BUTTON_PIN 4 // создаём объект класса QuadDisplay и передаём номер пина CS QuadDisplay qd(9); // переменная для подсчёта времени unsigned long prevMillis = 0; // переменная для хранения таймера int reverseTimer; void setup() { // инициализация дисплея qd.begin(); // функция установки таймера settingTimer(); } void loop() { // если время таймера не дошло до нуля и прошла 1 секунда if ((reverseTimer > 0) && ((millis() - prevMillis) > 1000)) { // выводим значение на дисплей qd.displayInt(--reverseTimer); // запоминаем текущее время prevMillis = millis(); // если таймер дошёл до нуля if (reverseTimer == 0) { // подаём звуковой сигнал и выводим «Off» на дисплей qd.displayDigits(QD_NONE, QD_O, QD_f, QD_f); tone(BUZZER_PIN, 4000, 200); } } // если нажата кнопка if (!digitalRead(BUTTON_PIN)) { // подаём звуковой сигнал tone(BUZZER_PIN, 500, 500); delay(1000); // выполняем настройку таймера settingTimer(); } } // функция настройки таймера void settingTimer() { // пока кнопка не нажата while (digitalRead(BUTTON_PIN)) { // считываем значения с потенциометра reverseTimer = analogRead(A0); // и выводим его на дисплей qd.displayInt(reverseTimer); delay(30); } // после нажатия кнопки, подаём звуковой сигнал tone(BUZZER_PIN, 2000, 200); delay(300); tone(BUZZER_PIN, 3000, 200); delay(300); tone(BUZZER_PIN, 4000, 200); }