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




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

Примітки

Відповідь
 
Параметри теми Параметри перегляду
Старий 25.02.2015, 14:04   #1
Придивляюся
  
 
Реєстрація: 01.09.2011
Звідки Ви: Ставропольский краи
Дописи: 78
сказав Дякую: 27
сказали Дякую 49 раз(и) в 28 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від AlexVOK Переглянути допис
paradox860,
молодчина

внесу корректировку для экономии памяти без изменения функционала
//////////////////////////////////////////////////////////////////////////////////////////////
if (light1){
myGLCD.print("L1", 3, 30);/////////
}

if (light2){
myGLCD.print("L2", 15, 30);/////////
}

if (CO2){
myGLCD.print("Co2", 27, 30);/////////
}
///////////////////////////////////////////////////////////////////////////////////////

смысла нет в печати пустых строк - экран каждый цикл очищается
Спасибо, недоглядел!
__________________
Сообщество аквариумистов КМВ www.aquakmv.com

paradox860 поза форумом   Відповісти з цитуванням
cказали "Дякую" paradox860 за цей допис:
Старий 27.02.2015, 09:05   #2
Живу я тут
  
 
Реєстрація: 06.04.2012
Звідки Ви: Санкт-Петербург
Дописи: 176
сказав Дякую: 22
сказали Дякую 30 раз(и) в 26 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Вот и я думаю не туда пихаю.

Вячеслав Сергеев поза форумом   Відповісти з цитуванням
Старий 27.02.2015, 12:23   #3
Живу я тут
  
 
Реєстрація: 06.04.2012
Звідки Ви: Санкт-Петербург
Дописи: 176
сказав Дякую: 22
сказали Дякую 30 раз(и) в 26 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

индикатор обогревателя сделал а включить не могу.
Мініатюри долучень
Щоб збільшити малюнок, клацніть по ньому
Назва:  Безымянный.jpg
Переглядів: 586
Розмір:  114,0 КБ
ID:	486069  

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

Вячеслав Сергеев, так работать не будет

EXT_HEATER_PIN - это просто № ножки и никакой информации о состоянии не несет

AlexVOK поза форумом   Відповісти з цитуванням
Старий 27.02.2015, 13:30   #5
Живу я тут
  
 
Реєстрація: 06.04.2012
Звідки Ви: Санкт-Петербург
Дописи: 176
сказав Дякую: 22
сказали Дякую 30 раз(и) в 26 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

AlexVOK, Я предполагал это, мне не найти строку в которой хранится состояние D12. Подскажите пожалуйста.

Вячеслав Сергеев поза форумом   Відповісти з цитуванням
Старий 27.02.2015, 23:28   #6
Бан за нарушения
  
 
Реєстрація: 04.01.2009
Звідки Ви: Полтава
Дописи: 5.494
сказав Дякую: 6.242
сказали Дякую 5.758 раз(и) в 2.264 повідомленні
Надіслати повідомлення для sae74 на ICQ Надіслати повідомлення для sae74 на Skype
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

AlexVOK,Из сообщения AlexNT я так понял что УДО дозатор вы просто делаете задержку?
Позволю предложить вставить возможность прерывания подачи.
Или это реализовано?


__________________

sae74 поза форумом   Відповісти з цитуванням
Старий 28.02.2015, 00:19   #7
Придивляюся
  
 
Реєстрація: 08.01.2008
Звідки Ви: Pinsk, RB
Дописи: 43
сказав Дякую: 5
сказали Дякую 16 раз(и) в 12 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від sae74 Переглянути допис
AlexVOK,Из сообщения AlexNT я так понял что УДО дозатор вы просто делаете задержку?
Позволю предложить вставить возможность прерывания подачи.
Или это реализовано?
Нет. Видать плохо выразился. Как раз у меня дозаторы УДО просто вырезаны за ненадобностью. Участок кода с дозаторами - это целиком Ваш код. Он приведен как пример того участка кода где моя идея с "отложенной" записью в ножки процессора НЕ сработает.

AlexNT поза форумом   Відповісти з цитуванням
Старий 27.02.2015, 12:44   #8
Придивляюся
  
 
Реєстрація: 12.01.2015
Звідки Ви: Litva
Дописи: 21
сказав Дякую: 0
сказали Дякую 1 раз(и) в 1 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Dobryj den, a vy nedumali o takoi podsvetke akvariuma http://www.ebay.com/itm/1W-COB-LED-F...item2ed6f90bc7
dolzno byt udobno, odna palocka 50-60 v. Ja kupil lampocku e27 4w iz 4 palocek ocen prijatnyj svet, gorit kak lampocka i svet dajet na 360 gradusov.

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

В начале
boolean HEATER = false;


if(cur_temp < (float)aquaT){
digitalWrite(EXT_HEATER_PIN, HIGH); // включает нагреватель
HEATER = true;
}else{
digitalWrite(EXT_HEATER_PIN, LOW); // выключает нагреватель
HEATER = false;
}


Востаннє редагував Петко Шкодров: 02.03.2015 о 12:50..
Петко Шкодров поза форумом   Відповісти з цитуванням
cказали "Дякую" Петко Шкодров за цей допис:
Старий 01.03.2015, 14:04   #10
Живу я тут
  
 
Реєстрація: 06.04.2012
Звідки Ви: Санкт-Петербург
Дописи: 176
сказав Дякую: 22
сказали Дякую 30 раз(и) в 26 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від Петко Шкодров Переглянути допис
В начале
boolean HEATER = false;


if(cur_temp < (float)aquaT){
digitalWrite(EXT_HEATER_PIN, HIGH); // включает нагреватель
HEATER = true;
}else
digitalWrite(EXT_HEATER_PIN, LOW); // выключает нагреватель
HEATER = false;
Спасибо, завтра попробую.

Вячеслав Сергеев поза форумом   Відповісти з цитуванням
Старий 27.02.2015, 21:53   #11
Придивляюся
  
 
Реєстрація: 08.01.2008
Звідки Ви: Pinsk, RB
Дописи: 43
сказав Дякую: 5
сказали Дякую 16 раз(и) в 12 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Ну... раз уж пошли бросаться кусками кода, то внесу парочку вредных идеек.
(Да, вот такой я вредный)
Определяем переменные состояния выводов ардуинки что-то типа тагого
// Переменные текущего состояния выводов Arduino
byte pinCoolingState;
byte pinLed1State;
//byte pinLed2State;
//byte pinLed3State;
//byte pinLed4State;
//byte pinLed5State;
//byte pinLed6State;
byte pinAirState;
byte pinCOState;
byte pinLight1State;
byte pinLight2State;
byte pinFilterState;
byte pinHeaterState;
byte pinPowerOnState;
byte pinDispLedState;
//byte pinUdoMacroState;
//byte pinUdoMicroState;
//byte pinUdoFeState;

Затем во всех местах проги, где встречается код типа

analogWrite(LED_LIGHT_PIN, displLedLight);
или
digitalWrite(EXT_HEATER_PIN, HIGH);

пишем:
pinDispLedState = displLedLight;
pinHeaterState = HIGH

Т.е. физически в ножки ардуинки ничего не пишем. Только задаем виртуально их текущее состояние. И только в конце Loop() вызываем функцию записи что-то вроде:

void SetPinState(void)
{ //Устанавливает выходы Arduino в заданное состояние
analogWrite(EXT_COOLING_PIN, pinCoolingState); //Вентилятор
analogWrite(LED_LIGHT_PIN, pinDispLedState); //Подсветка дисплея
analogWrite(EXT_LIGHT_LED1_PIN, pinLed1State); //Светодиодная подсветка
//analogWrite(EXT_LIGHT_LED2_PIN, pinLed1State);
//analogWrite(EXT_LIGHT_LED3_PIN, pinLed1State);
//analogWrite(EXT_LIGHT_LED4_PIN, pinLed1State);
//analogWrite(EXT_LIGHT_LED5_PIN, pinLed1State);
//analogWrite(EXT_LIGHT_LED6_PIN, pinLed1State);

digitalWriteFast(EXT_AIR_PIN, pinAirState);
digitalWriteFast(EXT_CO2_PIN, pinCOState);
digitalWriteFast(EXT_LIGHT_1_PIN, pinLight1State); //Светильник 1
digitalWriteFast(EXT_LIGHT_2_PIN, pinLight2State); //Светильник 2
digitalWriteFast(EXT_FILTER_PIN, pinFilterState); //Фильтр
digitalWriteFast(EXT_HEATER_PIN,); //Нагреватель
digitalWriteFast(EXT_POWER_ON_PIN,);
//digitalWriteFast(EXT_UDO_MACRO_PIN, pinUdoMacroState);
//digitalWriteFast(EXT_UDO_MICRO_PIN, pinUdoMicroState);
//digitalWriteFast(EXT_UDO_Fe_PIN, pinUdoFeState);
}

Таким образом, последовательно читая таймера мы не сталкиваемся с микросекундными бросками напряжения на выходах, когда один таймер включает нагрузку, а следом за ним другой таймер (или возможная подпрограмма обработки аварийных ситуаций) тут-же выключает ее. На выходе мы получаем уже четко сформированное состояние ВСЕХ ножек ардуинки.
Ну и плюс еще один Бонус - широкие возможности для эспериментов. Программа может обсчитывать кучу всяких выходов-нагрузок. Даже тех, которых на самом деле нет например с десяток каналов ледов для которых и выводов не хватит И только на последнем этапе вывести на конкретные ножки ардуинки или ипользовать регистры, расширители, а то и просто проигнорировать их не изменяя основной код программы или как вариант залить в "более ногастую" ардуину.

AlexNT поза форумом   Відповісти з цитуванням
Ці 3 користувач(ів) сказали Дякую AlexNT за це повідомлення:
AQUAPLUS (28.02.2015), icetechno (27.02.2015), paradox860 (02.03.2015)
Старий 27.02.2015, 22:06   #12
Придивляюся
  
 
Реєстрація: 08.01.2008
Звідки Ви: Pinsk, RB
Дописи: 43
сказав Дякую: 5
сказали Дякую 16 раз(и) в 12 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Ах да, забыл предупредить. Это не сработает на участках оригинального кода, где есть задержки как в обработке УДО
case 6: // UDO
udo_tim = (byte) (b4 & B00111111);
digitalWriteFast(EXT_POWER_ON_PIN, HIGH);
delay(100); //Время на выход в режим БП
switch ((byte) ((b4 >> 6) & B00000011)) {
case 0:
digitalWriteFast(EXT_UDO_MICRO_PIN, HIGH);
delay(udo_tim * 4.2);
digitalWriteFast(EXT_UDO_MICRO_PIN, LOW);
break;
case 1:
digitalWriteFast(EXT_UDO_MACRO_PIN, HIGH);
delay(udo_tim * 4.2);
digitalWriteFast(EXT_UDO_MACRO_PIN, LOW);
и так далее
Просто мне пока УДО не актуально и я "слегка позволил себе"
И да, у меня подключена библиотека digitalWriteFast.h так что в моем коде
digitalWriteFast()
можно заменить на обычное
digitalWrite()

AlexNT поза форумом   Відповісти з цитуванням
Старий 02.03.2015, 08:31   #13
Придивляюся
  
 
Реєстрація: 01.09.2011
Звідки Ви: Ставропольский краи
Дописи: 78
сказав Дякую: 27
сказали Дякую 49 раз(и) в 28 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

А кто разобрался как сделать так чтоб при вырубании света задания не проходили невыполненными? Смотрел скетч в этой теме, товарищ выкладывал, но как я понял там просто отдельная менюшка с интервальными таймерами...
__________________
Сообщество аквариумистов КМВ www.aquakmv.com

paradox860 поза форумом   Відповісти з цитуванням
Старий 02.03.2015, 11:51   #14
Придивляюся
  
 
Реєстрація: 08.01.2008
Звідки Ви: Pinsk, RB
Дописи: 43
сказав Дякую: 5
сказали Дякую 16 раз(и) в 12 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

А что еще надо?
Если таймер работает по ИНТЕРВАЛУ, то при включении света на первом-же цикле проверки таймеров будет произведена проверка попадания текущего времени в заданный для каждого из таймер ИНТЕРВАЛ. Соответственно все нагрузки управляемые ими включатся или выключатся согласно Вашим заданиям. Что и требовалось.

Ну естественно, те задания, которые включаются в определенный момент времени будут пропущены. Но там вроде ничего такого требующего отслеживания не наблюдается...

AlexNT поза форумом   Відповісти з цитуванням
Старий 02.03.2015, 12:46   #15
Живу я тут
  
 
Реєстрація: 06.04.2012
Звідки Ви: Санкт-Петербург
Дописи: 176
сказав Дякую: 22
сказали Дякую 30 раз(и) в 26 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Благодаря Петко Шкодрову получилось вот так.
Мініатюри долучень
Щоб збільшити малюнок, клацніть по ньому
Назва:  Безымянный.jpg
Переглядів: 844
Розмір:  195,7 КБ
ID:	486688  

Вячеслав Сергеев поза форумом   Відповісти з цитуванням
cказали "Дякую" Вячеслав Сергеев за цей допис:
AlexVOK (02.03.2015)


Share/Bookmark

Відповідь

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


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

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

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

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


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


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


no new posts