![]() |
|
|
#11 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Нужно использовать дополнительную переменную , в которой будет хранится состояние клапана вкл/выкл(true/false)
|
|
|
|
|
|
#12 |
|
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 ![]() |
Можете привести пример где есть такая переменная? Я где-то так и думал, но что-то покаместь не нашел, как правильно работать с такими переменными, или ссылку где это описывается.
|
|
|
|
|
|
#13 |
|
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1032 ![]() ![]() ![]() |
Второе реле должно срабатывать при двух условиях:
1. Датчик показывает сухость. 2. Ранее кран был закрыт. В Вашем коде проверяется только первое условие.. Предлагаю в рядом с срабатываением реле на закрытие прописать переменную и поставить в неё значение "1". А во втором условии (вместо else написать еще один if) проверять наличие в этой переменной единицы и сухость датчика через "и". Есть в примерах для ардуино с триггерной кнопкой. Сейчас пишу с телефона, код набивать неудобно... Последний раз редактировалось Tohin; 08.05.2016 в 00:05. |
|
|
|
|
|
#14 |
|
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 ![]() |
Спасибо, щас гляну пример.
|
|
|
|
|
|
#15 |
|
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 ![]() |
Привожу скетч, щас проверить нет возможности. Так как оборудование не у меня. Вот как то так:
Скетч: PHP код:
|
|
|
|
|
|
#16 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
PHP код:
|
|
|
|
|
|
#17 |
|
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 ![]() |
Спасибо за скетч, только почему-то теперь у меня оба реле по умолчанию замкнуты, то есть горит зеленый индикатор. Из-за чего это? И можно ли чтоб они были постоянно замкнуты? А так все работает, правда двигатель пришлось наоборот подключить.
PHP код:
|
|
|
|
|
|
#18 |
|
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 ![]() |
Только что переделал, почему то управляющий вход реле работает наоборот.
Переделал скетч под это: PHP код:
|
|
|
|
|
|
#19 |
|
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1032 ![]() ![]() ![]() |
Я добрался до компа...
На истину в последней инстанции не претендую, код не компилил и на работоспособность не проверял. Писал прям тут, могут быть ошибки по синтаксису. И написал бы так: Код:
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. |
|
|
|
|
|
#20 | |
|
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 ![]() |
Цитата:
|
|
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|