Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Умная сантехника

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.05.2016, 19:12   #11
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

Нужно использовать дополнительную переменную , в которой будет хранится состояние клапана вкл/выкл(true/false)
Admin вне форума   Ответить с цитированием
Старый 07.05.2016, 20:22   #12
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

Можете привести пример где есть такая переменная? Я где-то так и думал, но что-то покаместь не нашел, как правильно работать с такими переменными, или ссылку где это описывается.
Goblin вне форума   Ответить с цитированием
Старый 08.05.2016, 00:03   #13
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

Второе реле должно срабатывать при двух условиях:
1. Датчик показывает сухость.
2. Ранее кран был закрыт.

В Вашем коде проверяется только первое условие..
Предлагаю в рядом с срабатываением реле на закрытие прописать переменную и поставить в неё значение "1".
А во втором условии (вместо else написать еще один if) проверять наличие в этой переменной единицы и сухость датчика через "и".
Есть в примерах для ардуино с триггерной кнопкой.
Сейчас пишу с телефона, код набивать неудобно...

Последний раз редактировалось Tohin; 08.05.2016 в 00:05.
Tohin вне форума   Ответить с цитированием
Старый 08.05.2016, 07:42   #14
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

Спасибо, щас гляну пример.
Goblin вне форума   Ответить с цитированием
Старый 08.05.2016, 07:55   #15
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

Привожу скетч, щас проверить нет возможности. Так как оборудование не у меня. Вот как то так:
Скетч:
PHP код:
int sensorPin A0;   
int sensorValue 0
int Relay 2;
int Relay2 3;

int Flag 0;

void setup() 
{
  
Serial.begin(57600);
  
pinMode(2OUTPUT);
   
pinMode(3OUTPUT);
}

void loop() 

  
sensorValue analogRead(sensorPin);
  
Serial.println(sensorValue);
  
delay(200);
  if(
sensorValue 250
  {
  
  
digitalWrite(RelayHIGH);   // реле включено
  
delay(4000);
  
digitalWrite(RelayLOW);   // реле выключено
  
Flag 1
         
  }
  else 
  { 
   if(
Flag 1
  {
  
digitalWrite(Relay2HIGH);  // реле включено
  
delay(4000);     
  
digitalWrite(Relay2LOW);  // реле выключено
  
Flag 0;}

  }

Goblin вне форума   Ответить с цитированием
Старый 08.05.2016, 16:41   #16
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

PHP код:
void loop()  
{  
  
sensorValue analogRead(sensorPin); 
  if(
sensorValue 250 && Flag==0)  
  { 
   
  
digitalWrite(RelayHIGH);   // реле включено 
  
delay(4000); 
  
digitalWrite(RelayLOW);   // реле выключено 
  
Flag 1;           
  } 
  else  
  {  
   if(
Flag == 1)  
  { 
  
digitalWrite(Relay2HIGH);  // реле включено 
  
delay(4000);      
  
digitalWrite(Relay2LOW);  // реле выключено 
  
Flag 0;} 

  } 

Admin вне форума   Ответить с цитированием
Старый 08.05.2016, 18:38   #17
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

Спасибо за скетч, только почему-то теперь у меня оба реле по умолчанию замкнуты, то есть горит зеленый индикатор. Из-за чего это? И можно ли чтоб они были постоянно замкнуты? А так все работает, правда двигатель пришлось наоборот подключить.

PHP код:
int sensorPin A0;   
int sensorValue 0
int Relay 2;
int Relay2 3;

int Flag 0;


void setup() 
{
  
Serial.begin(57600);
  
pinMode(2OUTPUT);
   
pinMode(3OUTPUT);
 
}

void loop()   
{   
  
sensorValue analogRead(sensorPin);  
  
Serial.println(sensorValue);
  
delay(200);
  if(
sensorValue 250 && Flag==0)   
  {  
    
  
digitalWrite(RelayHIGH);   // реле включено  
  
delay(4000);  
  
digitalWrite(RelayLOW);   // реле выключено  
  
Flag 1;  
   
  }  
  else   
  {   
   if(
sensorValue 250 && Flag == 1)   
  {  
  
digitalWrite(Relay2HIGH);  // реле включено  
  
delay(4000);       
  
digitalWrite(Relay2LOW);  // реле выключено  
  
Flag 0;}  

  }  

Goblin вне форума   Ответить с цитированием
Старый 08.05.2016, 19:05   #18
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

Только что переделал, почему то управляющий вход реле работает наоборот.
Переделал скетч под это:
PHP код:
int sensorPin A0;   
int sensorValue 0
int Relay 5;
int Relay2 6;

int Flag 0;


void setup() 
{
  
Serial.begin(57600);
  
pinMode(RelayOUTPUT);
   
pinMode(Relay2OUTPUT);
 
digitalWrite(RelayHIGH);   // реле включено  
 
digitalWrite(Relay2HIGH);   // реле включено  
}

void loop()   
{   
  
sensorValue analogRead(sensorPin);  
  

  if(
sensorValue 250 && Flag==0)   
  {  
    
  
digitalWrite(RelayLOW );   // реле включено  
  
delay(4000);  
  
digitalWrite(RelayHIGH);   // реле выключено  
  
Flag 1;  
   
  }  
  else   
  {   
   if(
sensorValue 250 && Flag == 1)   
  {  
  
digitalWrite(Relay2,LOW);  // реле включено  
  
delay(4000);       
  
digitalWrite(Relay2,HIGH );  // реле выключено  
  
Flag 0;}  

  }  

Goblin вне форума   Ответить с цитированием
Старый 08.05.2016, 23:21   #19
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

Я добрался до компа...
На истину в последней инстанции не претендую, код не компилил и на работоспособность не проверял. Писал прям тут, могут быть ошибки по синтаксису.
И написал бы так:
Код:
int sensorPin = A0;    
int sensorValue = 0;  
int Relay = 5;  //закрытие крана
int Relay2 = 6; //открытие крана

int Flag = 1;  //при инициации считаем, что кран закрыт. тогда при первом включении, при отсутствии воды на полу, кран откроется.


void setup()  
{ 
  Serial.begin(57600); 
  pinMode(Relay, OUTPUT); 
   pinMode(Relay2, OUTPUT); 
 digitalWrite(Relay, LOW);   // реле выключено   
 digitalWrite(Relay2, LOW);   // реле выключено   
 
} 

void loop()    
{       

  if(Flag==0&& analogRead(sensorPin)< 250 )    //В первую очередь проверяем  Flag. ибо если кран уже закрыт, опрашивать датчик смысла нет.
  {   
     
	  digitalWrite(Relay, HIGH );   // Закрываем кран
	  delay(4000);   
	  digitalWrite(Relay, LOW);   // прекращаем закрывать кран, но лучше повесить концевик, чтобы убедиться. или манометр   после крана.
	  Flag = 1;   // напоминалка, что кран закрыт
    
  }   
  
if(Flag==1&& analogRead(sensorPin)> 250 )    //В первую очередь проверяем  Flag. ибо если кран открыт, датчик проверяет предыдущий цикл.
	  {   
	  digitalWrite(Relay2,HIGH);  // реле включено   
	  delay(4000);        
	  digitalWrite(Relay2,LOW );  // реле выключено   
	  Flag = 0;
	  }   // напоминалка, что кран открыт

}

P.S. Тока щас дошло... А на реле с обратной стороны не написано "Low Level Trigger"?

Последний раз редактировалось Tohin; 08.05.2016 в 23:24.
Tohin вне форума   Ответить с цитированием
Старый 09.05.2016, 08:25   #20
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: Предупреждение потопа, взрыва и пожара.

Цитата:
P.S. Тока щас дошло... А на реле с обратной стороны не написано "Low Level Trigger"?
Написано, значит он так и должен работать?
Goblin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 7 (пользователей: 0 , гостей: 7)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 20:45. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика