Таймер полива с детектированием дня и ночи.
- Войдите на сайт для отправки комментариев
Задача: сделать таймер полива без привязки к реальному времени определяющий время суток.
Подошла бы полная копия такого устройства. Интервалы времени нужны меньше от 10сек. до часа примерно.
В зависимости от времени день или ночь – его определяет фото датчик, время работы насоса и время паузы между работой насоса регулируется отдельно 4-мя разными ручками, 2-мя справа (дневной режим) и 2-мя слева (ночной режим).
Казалось бы простейший проект ,но не пойму с чего начать. Конечно же не прошу написать скетч за меня)
Просто хотелось бы понять как строить структуру скетча и каким образом считать время.Как понимаю обычный delay не подойдет..
Очень желательно чтобы в фоне могли выполняться другие действия.
Всем заранее спасибо)
Как понимаю обычный delay не подойдет..
Очень желательно чтобы в фоне могли выполняться другие действия.
Всем заранее спасибо)
http://arduino.ru/Reference/Millis
Шаг первый. Повторяем схему из http://arduino.ru/tutorials/BlinkWithoutDelay целиком с нуля.
Шаг второй. Модифицируем предыдущую схему так, чтобы светодиод горел одно фиксированое время, а не горел другое, но тоже фиксированное время.
Шаг третий. Вставляем в эту схему поненциометр, который определяет продолжительность мигания. Продолжительность паузы оставляем фиксированной.
Шаг четвертый. Вставляем еще один потенциометр. Первый определяет продолжительность горения светодиода, второй - продолжительность паузы между вспышками.
Шаг пятый. Добавляем датчик освещения. В зависимости от датчика пусть светодиожд мигает "днем" = "согласно установкам потенциометра", а "ночью" - с фиксированными интервалами.
Шаг шестой. Еще два потенциометра, определяющих интервали мигания "ночью".
Шаг седьмой. Заменяем светодиод на насос.
Profit.
Кстати, это прекрасный пример для иллюстрации того, как сложную задачу можно и нужно решать "по частям", разбив на элементарные.
Добавьте модуль часов на батарейке RTC, у китайцев 3 бакса вместе с литиевой батарейкой и пересылкой...
фотодатчик тож не очень обязателен... восход и заход солнца можно посчитать... хотя если вы будете считать количества солнца, типа сколько воды вылить....
Большое спасибо, за ответы.
Tsostik , cпасибо за чёткий план действий) millis() это то что нужно.
Не могли бы по 2 пункту подсказать , создал две переменные - previousMillis2 и interval2 смотрю на них и не понимаю что с ними делать :)
не ожидал что так сложно будет честно говоря, думаю со следующими пунктами сам справлюсь)
Всё заработало! Спасибо за помощь. хотелось бы только усовершенствовать строчки:
и
чтобы if срабатывало через циклов 100 например , чтобы исключить ложные переключения.
то есть, если fotorezval будет сто раз подряд меньше 500 тогда перейти к ночной части кода.
Обычно для этого не считают количество "срабатываний", а вводят гистерезис.
Цифры 450 и 550 взяты "от балды", правильные зависят от чувствительности и размаха Вашего датчика.
Большое спасибо.