Давным давно, еще когда доллар стоил 35 рублей была у меня мечта автоматизировать аквариум "по самое небалуйся".
И если с дозированием СО2 вопрос решился как-то просто, то дозировка удобрений никак не давалась.
С начала я попытался сделать нечто похоже на это:
Но попытка не увенчалась успехом (у меня не было такого тонкого оргстекла).
Тогда я просто купил его, благо на Украине его производство было поставлено на поток.
Но оказалось, что он неудобен, сложен в настройке и главное: он убивает любое розеточное реле времени.
Пришлось снять и отправить его на покой.
В тот момент у наших китайских товарищей появилась прекрасная альтернатива - агрегат с перистальтическими помпами.
Но в ней так же нашлись изъяны.
Во первых цена - на тот момент около $200;
Во вторых всего три помпы;
В третьих неадекватное управление таймером.
Потом внезапно доллар стал стоить больше 60 и жаба выросла в два раза.
А тут на алиэкспрессе я нахожу помпы отдельно по вполне демократической цене - около 500 рублей за штуку.
"А почему бы не сделать дозатор самому?", - подумал я. И залез поглубже на али.
Мне нужна была система с одной стороны достаточно простая, а с другой очень гибкая.
"Arduino ебтыть!", - опять подумал я.
Но я никогда не пробовал программировать arduino, поэтому мне нужно было попробовать.
Я заказал:
1. Аrduino Mega2560
2. LCD Keypad Shield LCD1602
3. 4-Channel Relay Module Shield for Arduino
4. Модуль точного времени DS3231
К всему этому я докупил макетную плату и проводки.
Когда все пришло я собрал макет панели управления
и углубился в программирование.
Сказать, что сначала я не понял нихрена это ничего не сказать.
Я даже не мог вдуплить в структуру программы.
Немного помогло то, что я как то уже пытался осилить С++, правда давно.
А программы для arduino пишутся на языке основанном на C++.
Но все равно, я вряд ли смог бы написать программу с нуля. Поэтому пошел по привычному многим пути плагиата! :)
За основу был взят скетч от
ArduinoLab Но он был написан для другого модуля часов и для одного таймера.
Посему я, взорвав себе мозг читая описание к библиотеке модуля точного времени, переписал программу под DS3231.
Дальше все было относительно просто, я просто склонировал функцию setOnOff на 4 таймера. Программа работала, но была уродской по внешнему виду. А так же мне не нравилось, что в программе задавалось начальное и конечное время выполнения таймера с точностью до минуты. Мне хотелось чтоб таймер можно было записать как начало включения плюс время выполнения в минутах и секундах.
После 2-х дневного мозгового штурма и великолепной аллегории с форума arduino.ru я разобрался в способах передачи переменных в функцию и изъятию их оттуда назад. Программа сократилась в 2 раза. Ну а переписать ее для задания времени работы таймера вместо интервала было уже делом плевым.
Конечный код лежит
тут В китайском перистальтическом насосе меня, так же, не устраивало то, что к нему нужны были банки под удобрения.
Я же хочу чтоб все было в одном приборе. Поэтому в следующей части я напишу как я делал емкость.