 |
|
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);
|
|
|
Ці 4 користувач(ів) сказали Дякую Петко Шкодров за це повідомлення:
|
|
20.03.2017, 17:20
|
#2
|
Бан за нарушения
Реєстрація: 13.05.2016
Звідки Ви: Глобино
Дописи: 145
сказав Дякую: 37
сказали Дякую 54 раз(и) в 32 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Между прочим, заглянула в программу и ТС использует там EEPROM.
В начале программы и по ходу выполнения происходят чтения и записи в память.
Что бы понять что именно не так, ТСу понадобится от вас больше информации, какие значения именно обнуляются при потери питания?
__________________ 
|
|
|
20.03.2017, 17:51
|
#3
|
Придивляюся
Реєстрація: 09.02.2017
Звідки Ви: Samara
Дописи: 22
сказав Дякую: 8
сказали Дякую 1 раз(и) в 1 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Цитата:
Допис від mashenkaM
Между прочим, заглянула в программу и ТС использует там EEPROM.
В начале программы и по ходу выполнения происходят чтения и записи в память.
Что бы понять что именно не так, ТСу понадобится от вас больше информации, какие значения именно обнуляются при потери питания?
|
ТС сам в курсе что обнуляется в его контроллере.
|
|
|
21.03.2017, 09:40
|
#4
|
Бан за нарушения
Реєстрація: 13.05.2016
Звідки Ви: Глобино
Дописи: 145
сказав Дякую: 37
сказали Дякую 54 раз(и) в 32 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Цитата:
Допис від ya7sergey
ТС сам в курсе что обнуляется в его контроллере.
|
Вы не обижайтесь пожалуйста, но как только прочла ваш пост, сразу вспомнилась топ цитата с баша:
Оффтоп
<Elena> Алексей, ваша программа опять не работает! Достало уже! Я буду жаловаться.
<polecat> Добрый день, в чём выражается проблема?
<Elena> Не парьте мозги, программа не работает! Исправьте! У меня работа стоит!
<polecat> Для того чтобы исправить программу, для начала мне нужно узнать, что вы понимаете под проблемой.
<Elena> У меня уже очередь в 10 человек!
<polecat> Это проблема?
<Elena> Проблема!
<polecat> Это проблема моей программы?
<Elena> Какая разница? Вы будете исправлять программу?
<polecat> Буду, но вы можете хотя бы пару раз ответить на поставленные вопросы?
<Elena> Я вам оракул, что ли на вопросы отвечать? Я в вашей программе ничего не понимаю.
<polecat> Скажите только, что именно работает не так.
<Elena> Ну вы же писали программу!
<polecat> ..., УБЕЙ СЕБЯ!
<Elena> ???
<polecat> УБЕЙ СЕБЯ, ...!
<Elena> Попрошу не хамить!
<polecat> СЛУШАЙ МЕНЯ, ..., ОБЩАТЬСЯ БУДУ ТОЛЬКО С ВАШИМ ДИРЕКТОРОМ, А ТЫ ИДИ НА ..., И ПУСТЬ ТЕБЯ ТАМ ... МЕДВЕДИ!!!
<Elena> Алексей, это Андрей Сергеевич! Программу только что проверил - всё работает. С твой путевки валяемся падсталом, похоже Лену туда и отправим, снабдив вазелином. 
__________________ 
Востаннє редагував mashenkaM: 21.03.2017 о 09:55..
|
|
|
21.03.2017, 10:48
|
#5
|
Придивляюся
Реєстрація: 09.02.2017
Звідки Ви: Samara
Дописи: 22
сказав Дякую: 8
сказали Дякую 1 раз(и) в 1 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Цитата:
Допис від mashenkaM
Вы не обижайтесь пожалуйста, но как только прочла ваш пост, сразу вспомнилась топ цитата с баша:
Оффтоп
<Elena> Алексей, ваша программа опять не работает! Достало уже! Я буду жаловаться.
<polecat> Добрый день, в чём выражается проблема?
<Elena> Не парьте мозги, программа не работает! Исправьте! У меня работа стоит!
<polecat> Для того чтобы исправить программу, для начала мне нужно узнать, что вы понимаете под проблемой.
<Elena> У меня уже очередь в 10 человек!
<polecat> Это проблема?
<Elena> Проблема!
<polecat> Это проблема моей программы?
<Elena> Какая разница? Вы будете исправлять программу?
<polecat> Буду, но вы можете хотя бы пару раз ответить на поставленные вопросы?
<Elena> Я вам оракул, что ли на вопросы отвечать? Я в вашей программе ничего не понимаю.
<polecat> Скажите только, что именно работает не так.
<Elena> Ну вы же писали программу!
<polecat> ..., УБЕЙ СЕБЯ!
<Elena> ???
<polecat> УБЕЙ СЕБЯ, ...!
<Elena> Попрошу не хамить!
<polecat> СЛУШАЙ МЕНЯ, ..., ОБЩАТЬСЯ БУДУ ТОЛЬКО С ВАШИМ ДИРЕКТОРОМ, А ТЫ ИДИ НА ..., И ПУСТЬ ТЕБЯ ТАМ ... МЕДВЕДИ!!!
<Elena> Алексей, это Андрей Сергеевич! Программу только что проверил - всё работает. С твой путевки валяемся падсталом, похоже Лену туда и отправим, снабдив вазелином. 
|
Не понял вашего сарказма. По моему я четко сформулировал свой вопрос по контроллеру. Ответ, который меня устраивает, я не получил. Решил проблему аппаратно с помощью ИБП. Если Вы хотите со мной пообщаться еще - прошу в личку.
|
|
|
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
|
Живу я тут
Реєстрація: 31.07.2010
Звідки Ви: Белоруссия, Гомель
Дописи: 413
сказав Дякую: 38
сказали Дякую 192 раз(и) в 87 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Цитата:
Допис від Витенька
ya7sergey Вы внимательно, хорошенько всё обдумайте и потом может поймёте что в этом коде всё сделано по уму. Как вариант, старт контроллера после отключения электроэнергии, а вас дома нет, в коде как раз сделано так что запустится фильтр и компрессор, свет при вашем отсутствии и после простоя оборудования не важен, так же если вдруг произойдет отключение среди ночи потом после включения электроэнергии вам нужен не слабый торшер в виде аквариума посреди ночи? Ну а вообще в коде можно всё переколбасить на своё хочу но там ещё раз повторюсь всё и так умно подогнано как для основных функций контроллера.
|
По уму это когда контроллер восстанавливает свое состояние к моменту включения с учетом изменившихся параметров (времени, температуры, ПШ и.т.п.) все остальное это от лукавого. Что касается текущего проекта, открываем скетч и смотрим, сразу в Setup(). Из настроек восстанавливаются :
aquaT = EEPROM.read(2); // Требуемая температура воды
minCool = EEPROM.read(3); // минимальные обороты кулера для вентиляции крышки и охлаждения ламп
maxCool = EEPROM.read(4); // максимальные обороты для охлаждения воды
Простите а каналы? Изначально они забиваются ВКЛ\ВЫКЛ программно!!! Т.е. я жестко привязан к номеру розетки... А таймеры? А прочие настройки? А если начать читать код, то что-то поправить там это просто ппц...Как писали выше он не читаемый, тут месяц только рефакторить нужно будет. Эти магические цифры в адресах, если ТС попросить через полгода что-то поправить я уверен что это будет с таким скрипом происходить и с таким количеством багов, что проще заново написать... И судя по тому что в скетче уже более 1700 строк то место для прошивки там уже не особо много осталось, и если вкидывать еще код который доведет до ума все о чем вы пишите то не факт что оно влезет в кристалл ИМХО.
|
|
|
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. Не благодарное это дело, перепиливать чужой код, да еще на столько глобально...
|
|
|
21.03.2017, 12:01
|
#10
|
Живу я тут
Реєстрація: 31.07.2010
Звідки Ви: Белоруссия, Гомель
Дописи: 413
сказав Дякую: 38
сказали Дякую 192 раз(и) в 87 повідомленні
|
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 файл, который все прошили нашли ошибки отписали в обратку, ТС исправил и все довольны. Но тут лежит исходник, я так понимаю предлагается исправлять ошибки всем тем кто хочет повторить этот контроллер.... ИМХО но это нереально! Прошу прощение если задел чьи-то чувства и испортил настроение, я не хотел.
|
|
|
21.03.2017, 13:29
|
#11
|
Бан за нарушения
Реєстрація: 13.05.2016
Звідки Ви: Глобино
Дописи: 145
сказав Дякую: 37
сказали Дякую 54 раз(и) в 32 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
AquaGomel, спокойствие, только спокойствие 
Мы сами так писали пару лет назад, я так точно  Потом после пары книжек у меня настало просветление и всё равно местами мне мой код не нравится, хочется его сделать более компактным и лаконичным.
Витенька, как я писала выше, интерес и возможности могут быть только у автора текста  Всем остальным это головная боль не нужна.
__________________ 
|
|
|
22.03.2017, 12:36
|
#12
|
Живу я тут
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
AquaGomel, Машенька и все.
По поводу читабельности и кода и т.д. - без комментариев.
по поводу восстановления состояния каналов и.д.
В коде не заложена возможность восстановления состояния.
Как по мне идея не правильна.
Свет отключился днем (подавали СО2) - допустим электричество отсутствовало 2 дня и появилось ночью - в банке недостаток кислорода, а мы восстановим работу каналов и добавим туда СО2 - что на выходе?
Именно по этому он работает так как работает - и я спокойно уезжаю на 2 недели и не переживаю.
я не продаю контроллер - сделал для себя под свои нужды, выложил свои наработки в том виде как есть, так что критика только по делу - или предложите улучшения.
Если хочется сделать восстановление параметров на текущее время
Все просто прогоните в цикле обработчик событий за последние 24 часа до текущего времени.
Этот вариант также позволит не портить ЕЕПРОМ (там ограниченное количество циклов)
По поводу личного участия в переработке
к сожалению не планирую - много работы - а контроллер устраивает на все 100%
Одно могу сказать возможно в ближайшие месяцы будет новый проект контроллера для морского аквариума с LED светом, а это проект у меня трудится на пресняке и пока дорабатываться не будет.
Будет новый OLED экран но парадигма проекта сохранится - максимум удовольствия за 3 копейки 
|
|
|
Ці 2 користувач(ів) сказали Дякую AlexVOK за це повідомлення:
|
|
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 и экран с меня уже не нужен будет, зато написанные библиотеки для датчиков и таймеров будут работать и дальше, на то они и библиотеки 
__________________ 
|
|
|
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 аквариу 
__________________ 
|
|
|
 |
|
Тут присутні: 3 (учасників - 0 , гостей - 3)
|
|
Ваші права у розділі
|
Ви не можете створювати теми
Ви не можете писати дописи
Ви не можете долучати файли
Ви не можете редагувати дописи
HTML код Вимк.
|
|
|
Часовий пояс GMT +3. Поточний час: 05:47.
|