Кухонный таймер
Проекты на Arduino и Slot Shield
Простой электронный таймер запустит обратный отсчёт и громко пропищит о его окончании. Временной интервал задаётся ручкой потенциометра, а отсчёт запускается и останавливается кнопкой.
- Язык программирования: Arduino (C++)
Видеоинструкция
Что потребуется
Полный сет компонентов проекта. В сет входят:
Как собрать
Установите Troyka Slot Shield на Iskra Neo
Вставьте четырёхразрядный индикатор в левый нижний слот
Поверните модуль потенциометра на 180 градусов и вставьте в правый нижний слот.
Вставьте пьезопищалку в верхний левый слот.
Вставьте кнопку в правый верхний слот.
Скетч
Прошейте контроллер скетчем через Arduino IDE.
- timer.ino
// Подключаем библиотеку для работы с дисплеем #include <QuadDisplay2.h> // номер аналогового пина пищалки #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); }
Что дальше?
Хотите собрать другой девайс? Выберите своё будущее устройство из списка проектов на Slot Shield.
FAQ
Где скачать и как установить необходимые библиотеки?
У моего модуля QuadDisplay всего три ноги и расположены они слева. Можно ли использовать его в этом проекте?
Да, модуль можно использовать, но скетч, библиотеки и схема сборки отличаются.
Вставьте QuadDisplay в правый нижний слот
Прошейте контроллер скетчем через Arduino IDE.
- timer.ino
// Подключаем библиотеку для работы с дисплеем #include <QuadDisplay.h> // номер аналогового пина потенциометра #define POT_PIN A0 // номер цифрового пина пищалки #define BUZZER_PIN 2 // номер цифрового пина кнопки #define BUTTON_PIN 4 // номер цифрового пина дисплея #define DISPLAY_PIN 11 // переменная для подсчёта времени unsigned long prevMillis = 0; // переменная для хранения таймера int reverseTimer; void setup() { // функция установки таймера settingTimer(); } void loop() { // если время таймера не дошло до нуля и прошла 1 секунда if ((reverseTimer > 0) && ((millis() - prevMillis) > 1000)) { // выводим значение на дисплей displayInt(DISPLAY_PIN, --reverseTimer); // запоминаем текущее время prevMillis = millis(); // если таймер дошёл до нуля if (reverseTimer == 0) { // подаём звуковой сигнал и выводим «Off» на дисплей displayDigits(DISPLAY_PIN, 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); // и выводим его на дисплей displayInt(DISPLAY_PIN, reverseTimer); delay(30); } // после нажатия кнопки, подаём звуковой сигнал tone(BUZZER_PIN, 2000, 200); delay(300); tone(BUZZER_PIN, 3000, 200); delay(300); tone(BUZZER_PIN, 4000, 200); }
Скачайте и установите библиотеку для работы с «трёхногим» дисплеем.