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




Назад   Аквафорум - форум акваріумістів та тераріумістів > Акваріум та обладнання > "Самоделкин" > Аквариумная автоматика

Примітки

Відповідь
 
Параметри теми Параметри перегляду
Старий 25.03.2016, 17:10   #1
Живу я тут
  
 
Реєстрація: 21.07.2009
Звідки Ви: Оболонь
Дописи: 587
сказав Дякую: 86
сказали Дякую 102 раз(и) в 82 повідомленні
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

оплатил в Запорожье Мегу и 3.95 с тачем. что использую на акву а что не пойдет буду ваять замену часам в Лансере с62а
Оффтоп
__________________
реанимация компьютеров, серверов, сетей, телефонов-планшетов.

alex_palace поза форумом   Відповісти з цитуванням
Старий 25.03.2016, 18:56   #2
Бан за нарушения
  
 
Реєстрація: 04.01.2009
Звідки Ви: Полтава
Дописи: 5.494
сказав Дякую: 6.242
сказали Дякую 5.758 раз(и) в 2.264 повідомленні
Надіслати повідомлення для sae74 на ICQ Надіслати повідомлення для sae74 на Skype
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

alex_palace, Оффтоп


__________________

sae74 поза форумом   Відповісти з цитуванням
Старий 01.04.2016, 21:00   #3
Придивляюся
  
 
Реєстрація: 01.04.2016
Звідки Ви: Харьков
Дописи: 3
сказав Дякую: 3
сказали Дякую 2 раз(и) в 2 повідомленні
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

Доброго времени суток, дорогие участники форума! Просмотрев тему, решил сделать себе девайс.
Автор темы подробно все описал, за что ему Отдельное спасибо!!!
Прикрепляю небольшой фото-отчет.
Из трудностей было только то, что у меня другой экран ILI9327 и саму программу Arduino нужно было скачать c официального сайта (версия 10.6).

Самое главное!!! SD карта на 2 ноутах Win10 форматировалась но не читалась контроллером!!-РЕШЕНИЕ форматировать на Windows7

Единственный нюанс - Блок реле работает прямо противоположно.
Можно конечно использовать вторые контакты реле. Но возможна проблема - вдруг что случится с контроллером и беспрерывная подача УДО обеспечена.т.к. реле в таком случае работает на размыкание сети.


Востаннє редагував andreymakaroff: 01.04.2016 о 21:06..
andreymakaroff поза форумом   Відповісти з цитуванням
cказали "Дякую" andreymakaroff за цей допис:
sae74 (01.04.2016)
Старий 01.04.2016, 21:07   #4
Бан за нарушения
  
 
Реєстрація: 04.01.2009
Звідки Ви: Полтава
Дописи: 5.494
сказав Дякую: 6.242
сказали Дякую 5.758 раз(и) в 2.264 повідомленні
Надіслати повідомлення для sae74 на ICQ Надіслати повідомлення для sae74 на Skype
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

andreymakaroff, В личку я много раз уже описывал что делать.

Теперь опишу и тут.

В скетче на вкладке "Upravlenie" найти процедуру "void VklVyklKanal(byte StaroeSostoyanie, boolean OnOff_PWM){"

Там для управления фильтром есть такие строки, в которых нужно изменить HIGH на LOW
digitalWrite(k_Filtr, LOW); - выключено нужно заменить на HIGH
digitalWrite(k_Filtr, HIGH); - включено нужно заменить на LOW

в этой же процедуре найти строку "switch (NomerKanalaSostoyaniya) {"
и перед ней вставить
if(UrovenKanala = LOW){
UrovenKanala = HIGH;
}else{
UrovenKanala = LOW;
}


И еще, для управления каналами только через реле, нельзя активировать через сенсорный экран "ШИМ".


__________________

sae74 поза форумом   Відповісти з цитуванням
cказали "Дякую" sae74 за цей допис:
andreymakaroff (01.04.2016)
Старий 01.04.2016, 22:15   #5
Придивляюся
  
 
Реєстрація: 01.04.2016
Звідки Ви: Харьков
Дописи: 3
сказав Дякую: 3
сказали Дякую 2 раз(и) в 2 повідомленні
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

Попробовал эти изменения, к сожалению реле всегда включено в любом состоянии.

На всякий случай прикрепил Upravlenie.ino с изменениями
http://www.ex.ua/edit_storage/910503674971

andreymakaroff поза форумом   Відповісти з цитуванням
Старий 01.04.2016, 22:29   #6
Живу я тут
  
 
Реєстрація: 21.07.2009
Звідки Ви: Оболонь
Дописи: 587
сказав Дякую: 86
сказали Дякую 102 раз(и) в 82 повідомленні
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

попробуйте вместо релюх диоды повесить. очень наглядно : плюсом в соотв гнезда меги и на общую массу)
__________________
реанимация компьютеров, серверов, сетей, телефонов-планшетов.

alex_palace поза форумом   Відповісти з цитуванням
Старий 01.04.2016, 22:32   #7
Бан за нарушения
  
 
Реєстрація: 04.01.2009
Звідки Ви: Полтава
Дописи: 5.494
сказав Дякую: 6.242
сказали Дякую 5.758 раз(и) в 2.264 повідомленні
Надіслати повідомлення для sae74 на ICQ Надіслати повідомлення для sae74 на Skype
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

сейчас дам новый кусок кода


__________________

sae74 поза форумом   Відповісти з цитуванням
Старий 01.04.2016, 22:34   #8
Бан за нарушения
  
 
Реєстрація: 04.01.2009
Звідки Ви: Полтава
Дописи: 5.494
сказав Дякую: 6.242
сказали Дякую 5.758 раз(и) в 2.264 повідомленні
Надіслати повідомлення для sae74 на ICQ Надіслати повідомлення для sae74 на Skype
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

полностью замените процедуру "void VklVyklKanal(byte StaroeSostoyanie, boolean OnOff_PWM){"

void VklVyklKanal(byte StaroeSostoyanie, boolean OnOff_PWM){
culer();
techenie();
if (filtr >0 && filtr<maxFilterStop) {
TimeFiltra();
digitalWrite(k_Filtr, HIGH);
s_k_10="smoff.raw";
}
else if (filtr ==0){
digitalWrite(k_Filtr, LOW);
s_k_10="smon.raw";
}
else if (filtr >maxFilterStop+9){
digitalWrite(k_Filtr, HIGH);
s_k_10="smoff.raw";
}
boolean UrovenKanala=LOW;
if(OnOff_PWM ==LOW && StaroeSostoyanie>1)UrovenKanala=HIGH;// если выключен шим то устанавливаем режим выхода
switch (NomerKanalaSostoyaniya) {
case 1:

if(OnOff_PWM==LOW){

if(UrovenKanala==HIGH){
K_1_PWM=255;
digitalWrite(k1, LOW);
}
else{
K_1_PWM=0;
digitalWrite(k1, HIGH);
}
s_k_1=icon;
}
else{
pwmWrite(k1, StaroeSostoyanie);
K_1_PWM=StaroeSostoyanie;
// //Serial.println(K_1_PWM);
//s_k_1=String(StaroeSostoyanie);
s_k_1=icon;
}
if (icon != icon1 && nomer_ekrana ==9){
icon1=icon;
myFiles.loadBitmap(3, 171, 33, 33, icon1);
}

break;
case 2:
if(OnOff_PWM==LOW){

if(UrovenKanala==HIGH){
K_2_PWM=255;
digitalWrite(k2, LOW);
}
else{
K_2_PWM=0;
digitalWrite(k2, HIGH);
}
s_k_2 =icon;
// }
}
else{
pwmWrite(k2, StaroeSostoyanie);
K_2_PWM=StaroeSostoyanie;
// s_k_2=String(StaroeSostoyanie);
s_k_2 =icon;
}
if (icon != icon2 && nomer_ekrana ==9){
icon2=icon;
myFiles.loadBitmap(38, 171, 33, 33, icon2);
}

break;
case 3:
if(OnOff_PWM==LOW){

if(UrovenKanala==HIGH){
K_3_PWM=255;
digitalWrite(k3, LOW);
}
else{
K_3_PWM=0;
digitalWrite(k3, HIGH);
}
s_k_3 =icon;
// }
}
else{
pwmWrite(k3, StaroeSostoyanie);
K_3_PWM=StaroeSostoyanie;
// s_k_3=String(StaroeSostoyanie);
s_k_3 =icon;
}
if (icon != icon3 && nomer_ekrana ==9){
icon3=icon;
myFiles.loadBitmap(73, 171, 33, 33, icon3);
}
break;
case 4:
if(OnOff_PWM==LOW){

if(UrovenKanala==HIGH){
K_4_PWM=255;
digitalWrite(k4, LOW);
}
else{
K_4_PWM=0;
digitalWrite(k4, HIGH);
}
s_k_4 =icon;
// }
}
else{
pwmWrite(k4, StaroeSostoyanie);
K_4_PWM=StaroeSostoyanie;
// s_k_4=String(StaroeSostoyanie);
s_k_4 =icon;
}
if (icon != icon4 && nomer_ekrana ==9){
icon4=icon;
myFiles.loadBitmap(108, 171, 33, 33, icon4);
}

break;
case 5:
if(OnOff_PWM==LOW){

if(UrovenKanala==HIGH){
K_5_PWM=255;
digitalWrite(k5, LOW);
}
else{
K_5_PWM=0;
digitalWrite(k5, HIGH);
}
s_k_5 =icon;
// }
}
else{
pwmWrite(k5, StaroeSostoyanie);
K_5_PWM=StaroeSostoyanie;
// s_k_5=String(StaroeSostoyanie);
s_k_5 =icon;
}
if (icon != icon5 && nomer_ekrana ==9){
icon5=icon;
myFiles.loadBitmap(143, 171, 33, 33, icon5);
}

break;
case 6:
if(OnOff_PWM==LOW){

if(UrovenKanala==HIGH){
K_6_PWM=255;
digitalWrite(k6, LOW);
}
else{
K_6_PWM=0;
digitalWrite(k6, HIGH);
}
s_k_6 =icon;
// }
}
else{
pwmWrite(k6, StaroeSostoyanie);
K_6_PWM=StaroeSostoyanie;
// s_k_6=String(StaroeSostoyanie);
s_k_6 =icon;
}
if (icon != icon6 && nomer_ekrana ==9){
icon6=icon;
myFiles.loadBitmap(178, 171, 33, 33, icon6);
}

break;
case 7:
if(OnOff_PWM==LOW){

if(UrovenKanala==HIGH){
K_7_PWM=255;
digitalWrite(k7, LOW);
}
else{
K_7_PWM=0;
digitalWrite(k7, HIGH);
}
s_k_7 =icon;
// }
}
else{
analogWrite(k7, StaroeSostoyanie);
K_7_PWM=StaroeSostoyanie;
//s_k_7=String(StaroeSostoyanie);
s_k_7 =icon;
}
if (icon != icon7 && nomer_ekrana ==9){
icon7=icon;
myFiles.loadBitmap(213, 171, 33, 33, icon7);
}

break;
case 8:
if(OnOff_PWM==LOW){

if(UrovenKanala==HIGH){
K_8_PWM=255;
digitalWrite(k8, LOW);
}
else{
K_8_PWM=0;
digitalWrite(k8, HIGH);
}
s_k_8 =icon;
// }
}
else{
pwmWrite(k8, StaroeSostoyanie);
K_8_PWM=StaroeSostoyanie;
//s_k_8=String(StaroeSostoyanie);
s_k_8 =icon;
}
if (icon != icon8 && nomer_ekrana ==9){
icon8=icon;
myFiles.loadBitmap(248, 171, 33, 33, icon8);
}

break;
case 9:
if(OnOff_PWM==LOW){

if(UrovenKanala==HIGH){
K_9_PWM=255;
digitalWrite(k9, LOW);
}
else{
K_9_PWM=0;
digitalWrite(k9, HIGH);
}
s_k_9 =icon;
// }
}
else{
//pwmWrite(k9, StaroeSostoyanie);
pwmWrite(k9, StaroeSostoyanie);
K_9_PWM=StaroeSostoyanie;
//s_k_9=String(StaroeSostoyanie);
s_k_9 =icon;
}
if (icon != icon9 && nomer_ekrana ==9){
icon9=icon;
myFiles.loadBitmap(283, 171, 33, 33, icon9);
}

break;
default:
break;
}
}


__________________

sae74 поза форумом   Відповісти з цитуванням
cказали "Дякую" sae74 за цей допис:
andreymakaroff (01.04.2016)
Старий 01.04.2016, 23:06   #9
Придивляюся
  
 
Реєстрація: 01.04.2016
Звідки Ви: Харьков
Дописи: 3
сказав Дякую: 3
сказали Дякую 2 раз(и) в 2 повідомленні
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

Все заработало!!!!
Как все было:
Компилятор ругался на "maxFilterStop"
Заменил на 60
Чтоб получилось вот так:
if (filtr >0 && filtr<60) {
TimeFiltra();
digitalWrite(k_Filtr, HIGH);
s_k_10="smoff.raw";
}
else if (filtr ==0){
digitalWrite(k_Filtr, LOW);
s_k_10="smon.raw";
}
else if (filtr >59){
digitalWrite(k_Filtr, HIGH);
s_k_10="smoff.raw";
}

И все! Все получилось)))
Есть небольшой баг при калибровке УДО - Инверсия осталась.
Но это не существенная проблема.))))
Огромное спасибо автору!!!

andreymakaroff поза форумом   Відповісти з цитуванням
cказали "Дякую" andreymakaroff за цей допис:
sae74 (01.04.2016)
Старий 01.04.2016, 23:28   #10
Бан за нарушения
  
 
Реєстрація: 04.01.2009
Звідки Ви: Полтава
Дописи: 5.494
сказав Дякую: 6.242
сказали Дякую 5.758 раз(и) в 2.264 повідомленні
Надіслати повідомлення для sae74 на ICQ Надіслати повідомлення для sae74 на Skype
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

andreymakaroff, калибровку удо - посмотрю и тоже скину.


__________________

sae74 поза форумом   Відповісти з цитуванням
Старий 01.04.2016, 23:32   #11
Бан за нарушения
  
 
Реєстрація: 04.01.2009
Звідки Ви: Полтава
Дописи: 5.494
сказав Дякую: 6.242
сказали Дякую 5.758 раз(и) в 2.264 повідомленні
Надіслати повідомлення для sae74 на ICQ Надіслати повідомлення для sae74 на Skype
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

andreymakaroff, если мне не изменяет память - то на вкладке "KalibrovkaUDO" все LOW заменить на HIGH, и наоборот.

на вкладке полностью замените код "KalibrovkaUDO"

//Старт калибровки УДО

unsigned long start_udo;

void StartKalibrovkiUDO(){
myFiles.loadBitmap(120, 80, 81, 48, "stop.raw");
myGLCD.setColor (VGA_YELLOW);
myGLCD.print (UDO6,CENTER, 200 );
myGLCD.setColor (osnova);
OnOff=1;
kalibrovka_time=millis();
while(OnOff==1){
Zapusk();
if(myTouch.dataAvailable()==1)OnOff=0;
}
StopKalibrovkaUDO();
}
void StopKalibrovkaUDO(){
Zapusk();
kalibrovka_time= millis()-kalibrovka_time;
kalibrovka_time=kalibrovka_time/(obem_udo_kalibrovki/10);
save_kalibrovka_udo(kanal);
myFiles.loadBitmap(120, 80, 81, 48, "start.raw");
myGLCD.setColor (VGA_LIME);
myGLCD.print (UDO4,CENTER, 200 );
myGLCD.setColor (osnova);

}


void Zapusk(){
//Включить помпу!!!!!!!!!!!!!!!!!!!!!!!!!!!!
switch (kanal) {
case 1:
if(OnOff == 1){
digitalWrite(k1, LOW);
}
else{
digitalWrite(k1, HIGH);
}
break;
case 2:
if(OnOff == 1){
digitalWrite(k2, LOW);
}
else{
digitalWrite(k2, HIGH);
}
break;
case 3:
if(OnOff == 1){
digitalWrite(k3, LOW);
}
else{
digitalWrite(k3, HIGH);
}
break;
case 4:
if(OnOff == 1){
digitalWrite(k4, LOW);
}
else{
digitalWrite(k4, HIGH);
}
break;
case 5:
if(OnOff == 1){
digitalWrite(k5, LOW);
}
else{
digitalWrite(k5, HIGH);
}
break;
case 6:
if(OnOff == 1){
digitalWrite(k6, LOW);
}
else{
digitalWrite(k6, HIGH);
}
break;
case 7:
if(OnOff == 1){
digitalWrite(k7, LOW);
}
else{
digitalWrite(k7, HIGH);
}
break;
case 8:
if(OnOff == 1){
digitalWrite(k8, LOW);
}
else{
digitalWrite(k8, HIGH);
}
break;
case 9:
if(OnOff == 1){
digitalWrite(k9, LOW);
}
else{
start_udo= millis()-start_udo;
digitalWrite(k9, HIGH);
}
break;
default:
break;
}
}


void PuskUDO(){
byte PodatiUDO=0;
flag_prioritet_udo = 0;
// запись во внешний еппром
unsigned long Unsigned_long_0;
Unsigned_long_0 =read_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma));
unsigned long Unsigned_long_1;
Unsigned_long_1 =read_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma)+4);
if (Unsigned_long_0 == 0){// расчет времени подачи удо и запись в еепром
int odin_ml = read_kalibrovka_udo(RaschKanal)/10;//Получаем время для канала на 1 мл объема
byte kol_ml = obiem();//количество мл удо
unsigned long time_podachi_udo =(unsigned long)odin_ml*(unsigned long)kol_ml; // сколько милисикунд подавать удо
unsigned long time_kon_udo = millis()+(time_podachi_udo/10);
write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma), millis()); //время подачи удо
write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma)+4, time_kon_udo);//во сколько нужно прекратить подачу удо
PodatiUDO=1;
start_udo= millis();
icon ="smudo.raw";
flag_prioritet_udo = 1;
//Serial.print(millis());
//Serial.print(" ");
// Serial.print(time_kon_udo);
//Serial.print(" ");
// Serial.print(time_podachi_udo);
// Serial.print(" ");
// Serial.println((time_podachi_udo/10));
if (( time_kon_udo-millis()) <= 1100){//подаем удо до 1 секунды
//analogWriteKanal=UrovenPWM(PodatiUDO, 2, 1, 2);
kanal=RaschKanal;
OnOff=1;
Zapusk();
while(millis() < time_kon_udo){
PodatiUDO = 0;
// Serial.print("1 ");
//Serial.println(millis());
}
kanal=RaschKanal;
OnOff=0;
Zapusk();
flag_prioritet_udo = 0;
write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma), 4294967295); //больше не подаем удо
}
}
else if(Unsigned_long_1 > Unsigned_long_0){// нужно подавать удо
long time_podachi_udo;
if (millis()<Unsigned_long_0){//была перегрузка контролерра
Unsigned_long_1 =read_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma)+4);
time_podachi_udo= Unsigned_long_1 - Unsigned_long_0;
}
else{
Unsigned_long_1 =read_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma)+4);
time_podachi_udo=Unsigned_long_1 - millis();
}
if (time_podachi_udo<0)time_podachi_udo=0;
unsigned long time_kon_udo = millis()+time_podachi_udo;
write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma), millis()); //время подачи удо
write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma)+4, time_kon_udo);//во сколько нужно прекратить подачу удо
PodatiUDO=1;
icon ="smudo.raw";
flag_prioritet_udo = 1;
//Serial.println(time_podachi_udo);
if (( time_kon_udo-millis()) <= 1100){//подаем удо до 1 секунды
//analogWriteKanal=UrovenPWM(PodatiUDO, 2, 1, 2);
kanal=RaschKanal;
OnOff=1;
Zapusk();
while(millis() < time_kon_udo){
PodatiUDO = 0;
// Serial.print("2 ");
//Serial.println(millis());
}
kanal=RaschKanal;
OnOff=0;
Zapusk();
flag_prioritet_udo = 0;
write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma), 4294967295); //больше не подаем удо
}

}
else if (Unsigned_long_0 !=4294967295) {//прекартить подачу до новой даты
//Serial.print(millis());
// Serial.print(Unsigned_long_1);Serial.print(" - ");Serial.print(Unsigned_long_0); Serial.print(" = "); Serial.println(Unsigned_long_0-Unsigned_long_1);
write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma), 4294967295); //больше не подаем удо
PodatiUDO=0;
icon ="smoff.raw";
flag_prioritet_udo = 0;
// Serial.println(" stop ");
// Serial.print(" 4294967295 = ");
//Unsigned_long_0 =read_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma));
//Serial.println(Unsigned_long_0);
}
analogWriteKanal=UrovenPWM(PodatiUDO, 2, 1, 2);
//Serial.print("analogWriteKanal ");
//Serial.println(analogWriteKanal);
}


void UdoTimeStop(unsigned long StopTime, unsigned long TekTime, unsigned long StartTime){
if(TekTime > StopTime || TekTime < StartTime) {// если вышло время выполнения условия обнулить данные подачи удо
icon ="smoff.raw";
unsigned long Unsigned_long_0;
Unsigned_long_0 =read_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma));
if (Unsigned_long_0 !=0){
int adr_vrem = AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma);
write_znach(adr_vrem, 0);//больше не подаем удо
//Serial.println(read_znach(adr_vrem));
//Serial.println(" stop 2");
}
analogWriteKanal=UrovenPWM(0, 2, 1, 2);
}
}

//void TestUDO1(){
// byte Start_UDO=1;
// write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma), 0);//больше не подаем удо
// //Serial.print(RaschKanal);Serial.print(" ");Serial.println(RaschProgramma);
// while(Start_UDO!=0){
// PuskUDO();
// kanal=RaschKanal;
// Start_UDO=analogWriteKanal;
// OnOff=1;
// Zapusk();
// if(myTouch.dataAvailable()==1)write_znach(AdrHrane nieVneshEeprom_UDO(RaschKanal, RaschProgramma), 4294967295);//больше не подаем удо;
// }
// // Serial.print(RaschKanal);Serial.print(" ");Serial.println(RaschProgramma);
// OnOff=0;
// Zapusk();
// write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma), 4294967295);//больше не подаем удо
//}



void TestUDO(){
unsigned long Unsigned_long_0;
Unsigned_long_0 =0;//read_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma));
unsigned long Unsigned_long_1;
Unsigned_long_1 =read_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma)+4);
if (Unsigned_long_0 == 0){// расчет времени подачи удо и запись в еепром
int odin_ml = read_kalibrovka_udo(RaschKanal)/10;//Получаем время для канала на 1 мл объема
byte kol_ml = obiem();//количество мл удо
unsigned long time_podachi_udo =(unsigned long)odin_ml*(unsigned long)kol_ml; // сколько милисикунд подавать удо
unsigned long time_kon_udo = millis()+(time_podachi_udo/10);
// if (( time_kon_udo-millis()) <= 1100){//подаем удо до 1 секунды
//analogWriteKanal=UrovenPWM(PodatiUDO, 2, 1, 2);
kanal=RaschKanal;
OnOff=1;
Zapusk();
while(millis() < time_kon_udo){
//PodatiUDO = 0;
if(myTouch.dataAvailable()==1)time_kon_udo = 0;//больше не подаем удо;
// Serial.print("time_kon_udo ");
// Serial.print(time_kon_udo);
// Serial.print("millis() ");
// Serial.println(millis());
}
kanal=RaschKanal;
OnOff=0;
Zapusk();
flag_prioritet_udo = 0;
write_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma), 4294967295); //больше не подаем удо
delay(100);
// }

}
}


__________________

sae74 поза форумом   Відповісти з цитуванням
Старий 02.04.2016, 00:28   #12
Живу я тут
  
 
Аватар для Сергій М
 
Реєстрація: 31.12.2014
Звідки Ви: Львов
Дописи: 1.421
сказав Дякую: 278
сказали Дякую 830 раз(и) в 533 повідомленні
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

Именно поэтому я и заказал модуль-реле с триггером и теперь его можно использовать в любом проекте, просто переставляя перемычки.
Возможная аварийная ситуация и заставила над этим задуматься, так как бесконтрольная подача УДО убила бы акву.
Модуль - http://ru.aliexpress.com/item/12V-8-...b-967b6c409614

Сергій М поза форумом   Відповісти з цитуванням
cказали "Дякую" Сергій М за цей допис:
sae74 (02.04.2016)
Старий 02.04.2016, 09:22   #13
Бан за нарушения
  
 
Реєстрація: 04.01.2009
Звідки Ви: Полтава
Дописи: 5.494
сказав Дякую: 6.242
сказали Дякую 5.758 раз(и) в 2.264 повідомленні
Надіслати повідомлення для sae74 на ICQ Надіслати повідомлення для sae74 на Skype
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

На всеобщее тестирование выложил новую версию контроллера.
Тут скачать

Новые архивы начинаются с (2016)........rar

Пробуйте, тестируйте, пишите.


__________________

sae74 поза форумом   Відповісти з цитуванням
Старий 06.04.2016, 09:17   #14
Бан за нарушения
  
 
Реєстрація: 04.01.2009
Звідки Ви: Полтава
Дописи: 5.494
сказав Дякую: 6.242
сказали Дякую 5.758 раз(и) в 2.264 повідомленні
Надіслати повідомлення для sae74 на ICQ Надіслати повідомлення для sae74 на Skype
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

Цитата:
Допис від sae74 Переглянути допис
На всеобщее тестирование выложил новую версию контроллера.
Тут скачать

Новые архивы начинаются с (2016)........rar

Пробуйте, тестируйте, пишите.
Кто то уже испытал новую версию?
Забыл сказать, что после обновления нужно сделать "ресет" всем настройкам.


__________________

sae74 поза форумом   Відповісти з цитуванням
Старий 02.04.2016, 10:27   #15
Живу я тут
  
 
Реєстрація: 21.07.2009
Звідки Ви: Оболонь
Дописи: 587
сказав Дякую: 86
сказали Дякую 102 раз(и) в 82 повідомленні
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===

на 1.6.8 даже без правки скомпилировалось отлично! Т.к бутер на работе то залить пока не могу
несколько глупых вопросов
1 при отсутствии датчиков PH можно подачу повесить на реле по таймеру - правильно понял? (а аэрацию на нормальнозамкнутый контакт этого реле (как-то релюшек маловато заказал
2 светики К З С и Б повешу на ШИМ, уровнями по каналам смогу подогнать нужный цвет (а заменой картинок на карте с цифровых на буквенные еще и подписать их) но вот или туплю или как синхронизировать эти каналы? (таки поигрался чуть с ШИМами и приблизительно вырисовал себе ооочень красивую и надеюсь таки полезную цветовую картину. Утро с возрастающего синего через переход зеленого в красный и увеличение яркости белого. Когда белый 100% остальные 3 цвета выходят в 100%. (Сейчас у меня свет 4-2-4-2-4 т.е свет по 4 часа с перерывами и таки правду вычитал что при таких перерывах фотосинтез максимальный т.к при 12 часах подряд пузырять под конец почти переставало.. но мож это частный случай.) вместо выключения света в перерывах белый уходит в 20-30% а цвета уходят в синевато-красный (попробовать эмулировать тучи ) ну и на ночь синевато-белый 5-10% ) с уходом к желтому. (на словах описать трудно с работы выложу для критики цветографик отрисовал. Так вот вопрос синхронизации. В Олеговском (который для меня лично еще более избыточен Вашего) для этого графики по каналам, тут я так понял надо добавлять несколько программ на каждый канал и играться с ШИМ ?
ЗЫ - не на столько еще к сожалению еще освоил ардуиностроение но вдруг это не слишком сложно... Добавить +1 переменную которая 0 при ресете (очищенном ЕЕПРОМ) и 1 при сохраненных настройках и отдельной процедурой дать ЯВНОЕ из кода задание переменных, т.е вместо сидеть 2 часа с нуля настраивать задать предварительные настройки тех-же таймеров и подачи УДО итд...и через меню их уже корректировать по мере надобности. Логично?
3 вентилятор охлаждения ЛЕД ов вижу, а вентилятор охлаждения воды? или через шим, по если т ниже 25 (к примеру) то вкл реле обогревателя выкл шим канала Н на котором вентилятор и если выше то наоборот?
ЗЫ - сорри за многобукафф - до 3 ночи отбивал ДДоС удаленно
__________________
реанимация компьютеров, серверов, сетей, телефонов-планшетов.

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


Share/Bookmark

Відповідь


Тут присутні: 1 (учасників - 0 , гостей - 1)
 
Параметри теми
Параметри перегляду

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

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

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


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


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


no new posts