На головну сторінку Аквафорум
На головну сторінку




Назад   Аквафорум - форум акваріумістів та тераріумістів > Акваріум та обладнання > "Самоделкин" > Аквариумная автоматика
Аукцион Реєстрація ЧаПи Учасники Календар Нинішні дописи

Примітки

Відповідь
 
Параметри теми Параметри перегляду
Старий 23.03.2017, 19:15   #1
Придивляюся
  
 
Реєстрація: 12.11.2013
Звідки Ви: Болгария
Дописи: 34
сказав Дякую: 107
сказали Дякую 143 раз(и) в 20 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від ya7sergey Переглянути допис
Кусок кода этот. Но простая вставка вместо оригинального приводит к ошибке компиляции. Можете выложить рабочий скетч, если он у вас есть?
Есть много изменений.
Нет удо.Нет режим кормления.
Есть РН управление CO2

Файл LCD5110_Graph вставить "libraries"

#define EXT_FILTER_PIN 17
#define EXT_AIR_PIN 15
#define EXT_HEATER_PIN 16
#define EXT_COOLING_PIN 11
#define EXT_LIGHT_1_PIN 12
#define EXT_LIGHT_2_PIN 13
#define EXT_CO2_PIN 14

#define ALARM_PIN 0
#define PWM_PIN 10

#define Key_PIN 7

LCD5110 myGLCD(8, 7, 6, 4, 5);

OneWire temp(19);

DS1307 rtc(2, 3);
Долучені файли
Тип файлу: rar wer_aqua.rar (10,1 КБ, 157 переглядів)
Тип файлу: rar LCD5110_Graph.rar (140,0 КБ, 140 переглядів)

Петко Шкодров поза форумом   Відповісти з цитуванням
Ці 4 користувач(ів) сказали Дякую Петко Шкодров за це повідомлення:
AlexVOK (23.03.2017), Ant0ny (14.01.2019), mashenkaM (23.03.2017), ya7sergey (24.03.2017)
Старий 20.03.2017, 17:20   #2
Бан за нарушения
  
 
Реєстрація: 13.05.2016
Звідки Ви: Глобино
Дописи: 145
сказав Дякую: 37
сказали Дякую 54 раз(и) в 32 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Между прочим, заглянула в программу и ТС использует там EEPROM.
В начале программы и по ходу выполнения происходят чтения и записи в память.
Что бы понять что именно не так, ТСу понадобится от вас больше информации, какие значения именно обнуляются при потери питания?


__________________

mashenkaM поза форумом   Відповісти з цитуванням
Старий 20.03.2017, 17:51   #3
Придивляюся
  
 
Реєстрація: 09.02.2017
Звідки Ви: Samara
Дописи: 22
сказав Дякую: 8
сказали Дякую 1 раз(и) в 1 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від mashenkaM Переглянути допис
Между прочим, заглянула в программу и ТС использует там EEPROM.
В начале программы и по ходу выполнения происходят чтения и записи в память.
Что бы понять что именно не так, ТСу понадобится от вас больше информации, какие значения именно обнуляются при потери питания?
ТС сам в курсе что обнуляется в его контроллере.

ya7sergey поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 09:40   #4
Бан за нарушения
  
 
Реєстрація: 13.05.2016
Звідки Ви: Глобино
Дописи: 145
сказав Дякую: 37
сказали Дякую 54 раз(и) в 32 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від ya7sergey Переглянути допис
ТС сам в курсе что обнуляется в его контроллере.
Вы не обижайтесь пожалуйста, но как только прочла ваш пост, сразу вспомнилась топ цитата с баша:
Оффтоп


__________________


Востаннє редагував mashenkaM: 21.03.2017 о 09:55..
mashenkaM поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 10:48   #5
Придивляюся
  
 
Реєстрація: 09.02.2017
Звідки Ви: Samara
Дописи: 22
сказав Дякую: 8
сказали Дякую 1 раз(и) в 1 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від mashenkaM Переглянути допис
Вы не обижайтесь пожалуйста, но как только прочла ваш пост, сразу вспомнилась топ цитата с баша:
Оффтоп
Не понял вашего сарказма. По моему я четко сформулировал свой вопрос по контроллеру. Ответ, который меня устраивает, я не получил. Решил проблему аппаратно с помощью ИБП. Если Вы хотите со мной пообщаться еще - прошу в личку.

ya7sergey поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 11:02   #6
Живу я тут
  
 
Реєстрація: 10.10.2015
Звідки Ви: Дома
Дописи: 153
сказав Дякую: 20
сказали Дякую 33 раз(и) в 25 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

ya7sergey
А что именно вас не устраивает в коде, или ...?

Витенька поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 09:33   #7
Живу я тут
  
 
Реєстрація: 10.10.2015
Звідки Ви: Дома
Дописи: 153
сказав Дякую: 20
сказали Дякую 33 раз(и) в 25 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

ya7sergey Вы внимательно, хорошенько всё обдумайте и потом может поймёте что в этом коде всё сделано по уму. Как вариант, старт контроллера после отключения электроэнергии, а вас дома нет, в коде как раз сделано так что запустится фильтр и компрессор, свет при вашем отсутствии и после простоя оборудования не важен, так же если вдруг произойдет отключение среди ночи потом после включения электроэнергии вам нужен не слабый торшер в виде аквариума посреди ночи? Ну а вообще в коде можно всё переколбасить на своё хочу но там ещё раз повторюсь всё и так умно подогнано как для основных функций контроллера.

Витенька поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 11:07   #8
Живу я тут
  
 
Аватар для AquaGomel
 
Реєстрація: 31.07.2010
Звідки Ви: Белоруссия, Гомель
Дописи: 413
сказав Дякую: 38
сказали Дякую 192 раз(и) в 87 повідомленні
Надіслати повідомлення для AquaGomel на ICQ Надіслати повідомлення для AquaGomel на Skype
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від Витенька Переглянути допис
ya7sergey Вы внимательно, хорошенько всё обдумайте и потом может поймёте что в этом коде всё сделано по уму. Как вариант, старт контроллера после отключения электроэнергии, а вас дома нет, в коде как раз сделано так что запустится фильтр и компрессор, свет при вашем отсутствии и после простоя оборудования не важен, так же если вдруг произойдет отключение среди ночи потом после включения электроэнергии вам нужен не слабый торшер в виде аквариума посреди ночи? Ну а вообще в коде можно всё переколбасить на своё хочу но там ещё раз повторюсь всё и так умно подогнано как для основных функций контроллера.
По уму это когда контроллер восстанавливает свое состояние к моменту включения с учетом изменившихся параметров (времени, температуры, ПШ и.т.п.) все остальное это от лукавого. Что касается текущего проекта, открываем скетч и смотрим, сразу в Setup(). Из настроек восстанавливаются :

aquaT = EEPROM.read(2); // Требуемая температура воды

minCool = EEPROM.read(3); // минимальные обороты кулера для вентиляции крышки и охлаждения ламп
maxCool = EEPROM.read(4); // максимальные обороты для охлаждения воды

Простите а каналы? Изначально они забиваются ВКЛ\ВЫКЛ программно!!! Т.е. я жестко привязан к номеру розетки... А таймеры? А прочие настройки? А если начать читать код, то что-то поправить там это просто ппц...Как писали выше он не читаемый, тут месяц только рефакторить нужно будет. Эти магические цифры в адресах, если ТС попросить через полгода что-то поправить я уверен что это будет с таким скрипом происходить и с таким количеством багов, что проще заново написать... И судя по тому что в скетче уже более 1700 строк то место для прошивки там уже не особо много осталось, и если вкидывать еще код который доведет до ума все о чем вы пишите то не факт что оно влезет в кристалл ИМХО.

AquaGomel поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 11:37   #9
Придивляюся
  
 
Реєстрація: 09.02.2017
Звідки Ви: Samara
Дописи: 22
сказав Дякую: 8
сказали Дякую 1 раз(и) в 1 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від AquaGomel Переглянути допис
По уму это когда контроллер восстанавливает свое состояние к моменту включения с учетом изменившихся параметров (времени, температуры, ПШ и.т.п.) все остальное это от лукавого. Что касается текущего проекта, открываем скетч и смотрим, сразу в Setup(). Из настроек восстанавливаются :

aquaT = EEPROM.read(2); // Требуемая температура воды

minCool = EEPROM.read(3); // минимальные обороты кулера для вентиляции крышки и охлаждения ламп
maxCool = EEPROM.read(4); // максимальные обороты для охлаждения воды

Простите а каналы? Изначально они забиваются ВКЛ\ВЫКЛ программно!!! Т.е. я жестко привязан к номеру розетки... А таймеры? А прочие настройки? А если начать читать код, то что-то поправить там это просто ппц...Как писали выше он не читаемый, тут месяц только рефакторить нужно будет. Эти магические цифры в адресах, если ТС попросить через полгода что-то поправить я уверен что это будет с таким скрипом происходить и с таким количеством багов, что проще заново написать... И судя по тому что в скетче уже более 1700 строк то место для прошивки там уже не особо много осталось, и если вкидывать еще код который доведет до ума все о чем вы пишите то не факт что оно влезет в кристалл ИМХО.
Согласен с вами на все 100% с первой до последней буквы. За исключением одного: размер кода меня не особо волнует. У меня проект портирован на Мегу2560. Не благодарное это дело, перепиливать чужой код, да еще на столько глобально...

ya7sergey поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 12:01   #10
Живу я тут
  
 
Аватар для AquaGomel
 
Реєстрація: 31.07.2010
Звідки Ви: Белоруссия, Гомель
Дописи: 413
сказав Дякую: 38
сказали Дякую 192 раз(и) в 87 повідомленні
Надіслати повідомлення для AquaGomel на ICQ Надіслати повідомлення для AquaGomel на Skype
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від ya7sergey Переглянути допис
Согласен с вами на все 100% с первой до последней буквы. За исключением одного: размер кода меня не особо волнует. У меня проект портирован на Мегу2560. Не благодарное это дело, перепиливать чужой код, да еще на столько глобально...
Даже больше скажу, чуток поковырявшись по коду, нашел какие-то команды на восстановление чего-то куда-то... Но они разбросаны по всему коду, в каждом методе есть записи по типу
EEPROM.write(alertAdr+1,((EEPROM.read(alertAdr+1)& B00011111)^(curLoad<<5))); // сохраняем номер нагрузки Но даже если учесть что все же что-то и сохраняется и восстанавливается, то просто понять что и куда не реально... И проблема связана с просто с ошибкой, то легче от этого не становиться.
Далее в коде четко привязка к свету, кулерам, нагревателям и.т.п. Это в корне не верно, есть 8 каналов (наверное) и не должно быть никаких указателей на то что висит на этих каналах. У каждого конфигурация аквариума разная, и получается что у кого-то свет занимает 4 канала а у кого-то 1.
Команды включения и выключения
digitalWrite(EXT_HEATER_PIN, HIGH);
digitalWrite(EXT_HEATER_PIN, LOW);

В каждом методе по 20 штук. Как это все дебажить? Как определить где что включает где что выключает?

// перечеркиваем не активные таймера
if(!(EEPROM.read(offf+(j-1)*4)&B10000000)){
myGLCD.drawLine(0,vy+5,83,vy+5);
}

Осмысленные константы вообще не используются. Т.е. выражение не несет никакой смысловой логики для тех кто будет читать этот код пытаясь его править. + В проекте используются куски стороннего кода, который просто где-то был взят к примеру метод float getTemp(), в котором уже есть нормальный подход к написанию кода с комментариями. Если перед глазами есть пример как надо, можно же было привести остальной проект к такому же виду?

Так можно продолжать бесконечно. Конечно можно сказать что это чей-то труд, что человек потратил время и.т.п. Это все понятно. Если это все грамотно работало бы, и человек выложил тупо hex файл, который все прошили нашли ошибки отписали в обратку, ТС исправил и все довольны. Но тут лежит исходник, я так понимаю предлагается исправлять ошибки всем тем кто хочет повторить этот контроллер.... ИМХО но это нереально! Прошу прощение если задел чьи-то чувства и испортил настроение, я не хотел.

AquaGomel поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 13:29   #11
Бан за нарушения
  
 
Реєстрація: 13.05.2016
Звідки Ви: Глобино
Дописи: 145
сказав Дякую: 37
сказали Дякую 54 раз(и) в 32 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

AquaGomel, спокойствие, только спокойствие
Мы сами так писали пару лет назад, я так точно Потом после пары книжек у меня настало просветление и всё равно местами мне мой код не нравится, хочется его сделать более компактным и лаконичным.
Витенька, как я писала выше, интерес и возможности могут быть только у автора текста Всем остальным это головная боль не нужна.


__________________

mashenkaM поза форумом   Відповісти з цитуванням
Старий 22.03.2017, 12:36   #12
Живу я тут
  
 
Аватар для AlexVOK
 
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

AquaGomel, Машенька и все.

По поводу читабельности и кода и т.д. - без комментариев.

по поводу восстановления состояния каналов и.д.
В коде не заложена возможность восстановления состояния.

Как по мне идея не правильна.
Свет отключился днем (подавали СО2) - допустим электричество отсутствовало 2 дня и появилось ночью - в банке недостаток кислорода, а мы восстановим работу каналов и добавим туда СО2 - что на выходе?

Именно по этому он работает так как работает - и я спокойно уезжаю на 2 недели и не переживаю.

я не продаю контроллер - сделал для себя под свои нужды, выложил свои наработки в том виде как есть, так что критика только по делу - или предложите улучшения.

Если хочется сделать восстановление параметров на текущее время
Все просто прогоните в цикле обработчик событий за последние 24 часа до текущего времени.
Этот вариант также позволит не портить ЕЕПРОМ (там ограниченное количество циклов)

По поводу личного участия в переработке
к сожалению не планирую - много работы - а контроллер устраивает на все 100%

Одно могу сказать возможно в ближайшие месяцы будет новый проект контроллера для морского аквариума с LED светом, а это проект у меня трудится на пресняке и пока дорабатываться не будет.
Будет новый OLED экран но парадигма проекта сохранится - максимум удовольствия за 3 копейки

AlexVOK поза форумом   Відповісти з цитуванням
Ці 2 користувач(ів) сказали Дякую AlexVOK за це повідомлення:
Sem (22.03.2017), Витенька (22.03.2017)
Старий 21.03.2017, 11:52   #13
Бан за нарушения
  
 
Реєстрація: 13.05.2016
Звідки Ви: Глобино
Дописи: 145
сказав Дякую: 37
сказали Дякую 54 раз(и) в 32 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від AquaGomel Переглянути допис
И судя по тому что в скетче уже более 1700 строк то место для прошивки там уже не особо много осталось, и если вкидывать еще код который доведет до ума все о чем вы пишите то не факт что оно влезет в кристалл ИМХО.
Ну это уже следующая ступень просветления!
У меня код для НАНО составляет где то 6000+ строк (2000+ их них или больше это код многоуровневого меню)
В какой то момент у меня просто закончилась оператива, а сколько ещё всего хотелось... Вот тогда я начала перерезать и оптимизировать код где только можно. Код в 100 строк превращался в 60 и изменялись области видимости переменных. В общем из загрузки в 90% оперативы получилось 55%, а размер самой программы тоже уменьшился процентов на 20-30.
НО для ATmega2560 самое интересное, что частоты кристалла, размер оперативы и флешки хватает что бы НЕ оптимизировать код.

Жаль что это всё нужно будет разбирать, потому что хочу собрать всё на ESP8266 и экран с меня уже не нужен будет, зато написанные библиотеки для датчиков и таймеров будут работать и дальше, на то они и библиотеки


__________________

mashenkaM поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 09:43   #14
Живу я тут
  
 
Реєстрація: 10.10.2015
Звідки Ви: Дома
Дописи: 153
сказав Дякую: 20
сказали Дякую 33 раз(и) в 25 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Спасибо Огромное Машенька! Пойду изучать новшества в которые Вы меня ткнули носом.

Витенька поза форумом   Відповісти з цитуванням
Старий 21.03.2017, 09:54   #15
Бан за нарушения
  
 
Реєстрація: 13.05.2016
Звідки Ви: Глобино
Дописи: 145
сказав Дякую: 37
сказали Дякую 54 раз(и) в 32 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від Витенька Переглянути допис
Спасибо Огромное Машенька! Пойду изучать новшества в которые Вы меня ткнули носом.
Только учтите что логика там вся на 3.3 вольта, хотя практически все датчики работают на этом напряжении (реле, часы, температурные датчики и т.д.)
Там есть конечно свои среды программирования для ESP8266, но самое приятное, что она полностью понимает обычный код для Arduino, разве что с некоторым нюансами. Есть интересные приколы - в Arduino delay останавливает программу на некоторое время, а в ESP8266 нет , она будет заниматься своими делами и через нужно время вернётся к нужной вам функции.
НО я правда сама только получила недавно сей девайс, хотя дополнительно мучаю 01 версию Муж допаял мне дополнительно 3 выхода, и теперь их хватит не 1 аквариу


__________________

mashenkaM поза форумом   Відповісти з цитуванням


Share/Bookmark

Відповідь

Мітки
arduino, акваконтроллер


Тут присутні: 3 (учасників - 0 , гостей - 3)
 

Ваші права у розділі
Ви не можете створювати теми
Ви не можете писати дописи
Ви не можете долучати файли
Ви не можете редагувати дописи

BB-код є Увімк.
Усмішки Увімк.
[IMG] код Увімк.
HTML код Вимк.

Швидкий перехід


Часовий пояс GMT +3. Поточний час: 05:47.


vBulletin 3.8.7 ; Copyright © 2000-2025 Jelsoft Enterprises Limited
Переклад: © Віталій Стопчанський, 2004-2010
(с)Бешлега Олександр Анатолійович, 2002-2025. Використання матеріалів сайту без посилання на джерело заборонено.
Дякуємо за ліцензійну версію форума компанію Барбус, представника торгової марки Sera в Україні.


no new posts