DTH 11 и Rele
- Войдите на сайт для отправки комментариев
Вс, 10/02/2019 - 17:56
Всем Привет ! и заранее Спасибо!
Помогите вставить в скейч включение и выключение реле времени. Пробовал через delay , работает не коркктно(
#include <dht.h>
#define dht_apin A0 // Analog Pin sensor is connected to
dht DHT;
int rele1 = 2;
int rele2 = 3;
int rele3 = 4;
void setup(){
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
pinMode(rele1, OUTPUT);
Serial.begin(9600);
delay(1000);//Delay to let system boot
Serial.println("DHT11 Humidity & temperature Sensor\n\n");
delay(1000);//Wait before accessing Sensor
}//end "setup()"
void loop(){
//Start of Program
DHT.read11(dht_apin);
Serial.print("Current humidity = ");
Serial.print(DHT.humidity);
Serial.print("% ");
Serial.print("temperature = ");
Serial.print(DHT.temperature);
Serial.println("C ");
delay(1000);//Wait 5 seconds before accessing sensor again.
if(DHT.temperature < 15.00) digitalWrite(rele2,HIGH);
if(DHT.temperature > 20.00) digitalWrite(rele2,LOW);
\
//Fastest should be once every two seconds.
}// end loop()
Код тоже вставлен некорректно.
Для начала, уважаемый, вставьте программу по правилам форума.
Да и расскажите заодно про "реле времени" - а то его как-то не видно.
Уважаемый, Ваша программа, как я понял, опрашивает датчик и принимает решение по включению или выкючению реле.
Не надо так часто опрашивать датчик - сделайте это раз в 10 секунд т.е. увеличте delay(10000) и проблемы исчезнут. Я сомневаюсь, что 10 секунд критично для Ваших процессов. А лучше поставить delay(5000) в 36 и 42 строках.
Не помогло, датчиксчитывает показания через 50с. возможно я не так что то написал?
возможно я не так что то написал?
вполне возможно. Пока не понятно, что вы вообще хотели написать и что не работает
вот это
delay(10000);
//Wait 5 seconds before accessing sensor again.
нихрена не 5 секунд задершка
[/quote]
вполне возможно. Пока не понятно, что вы вообще хотели написать и что не работает
[/quote]
датчик температуры считывает данные не раз в 10сек. а в 50 сек. Если увеличить время вкл и выкл реле то и считывание времени датчика увеличиваеться. я так понимаю delay для реле с DHT11 не дружит?
датчик температуры считывает данные не раз в 10сек. а в 50 сек. Если увеличить время вкл и выкл реле то и считывание времени датчика увеличиваеться. я так понимаю delay для реле с DHT11 не дружит?
нет, это вы с логикой не дружите
Если у вас сначала задержка 10 сек в строке 35, а потом еще 30 сек в строке 42 и 10 сек - в строке 44.
Всего - 10 + 30 + 10 = 50 секунд
работает ровно так, как написано
датчик температуры считывает данные не раз в 10сек. а в 50 сек. Если увеличить время вкл и выкл реле то и считывание времени датчика увеличиваеться. я так понимаю delay для реле с DHT11 не дружит?
нет, это вы с логикой не дружите
Если у вас сначала задержка 10 сек в строке 35, а потом еще 30 сек в строке 42 и 10 сек - в строке 44.
Всего - 10 + 30 + 10 = 50 секунд
работает ровно так, как написано
Подскажите как правильно написать ?
Подскажите как правильно написать ?
вы не обьяснили, чего вы хотите добиться от программы
Подскажите как правильно написать ?
вы не обьяснили, чего вы хотите добиться от программы
Если из скетча, который в сообщении #4, выкинуть строку 35, то он будет в точности соответствовать этому "алгоритму". Если он Вас не устраивает, значит Вы недостаточно точно формулируете задачу. Попробуйте хотя бы сформулировать, чем то что есть Вас не устраивает. Только обычным человеческим языком. Что работает не так?
У меня свои догадки есть, но когда Вы сами всё по полочкам разложите, решить задачку проще будет. Но скорее всего BlinkWithoutDelay опять изучать нужно или таймеры Деда Семёна.
Ватсон, заканчивайте тупить. Если вы не в состоянии сформулировать задачу обычным русским языком. то уж на языке программирования у вас точно никаких шансов нет.
Не, ну чо вы набросились, теперь то:
вапще всё понятно стало...
Ватсон, заканчивайте тупить. Если вы не в состоянии сформулировать задачу обычным русским языком. то уж на языке программирования у вас точно никаких шансов нет.
Мне необходимо
температура меньше 15 -реле 2 выкл.
температура больше 20 -реле 2 вкл.
реле 1 выкл. -18 часов (64 800 000)
реле 1 вкл. -6 часов (21 600 000)
так понятнее ?
так понятнее ?
Нет.
Нет.
Та че непонятного? Делей на 64 800 000 микросекунд, а потом на 21 600 000 микросекунд.
Та че непонятного? Делей на 64 800 000 микросекунд, а потом на 21 600 000 микросекунд.
температуру. выходит, раз в сутки меряем? :)
температуру. выходит, раз в сутки меряем? :)
Ну а че у градусника ресурс сажать?))))
To TC, сядьте все таки и рапишите последовательно, по пунктам, что в какой момент и при каких условиях должна делать ваша программа.
Мне необходимо
температура меньше 15 -реле 2 выкл.
температура больше 20 -реле 2 вкл.
реле 1 выкл. -18 часов (64 800 000)
реле 1 вкл. -6 часов (21 600 000)
так понятнее ?
Не понятнее. Всё то же самое только вместо секунд уже какие-то часы появились...
Я таки попробую погадать и описать необходимое поведение программы по своему разумению. Я бы описал желаемое примерно так:
Есть датчик DHT подключенный к пину такому-то, реле 1 и реле 2 подключенные к пинам таким-то. Реле включаются подачей высокого (или низкого?) уровня. Начальное состояние реле при включении устройства должно быть такое-то (включено или выключено).
После включения устройства необходимо раз в N секунд/минут/часов снимать показания датчика и в зависимости от полученного значения изменять состояние реле 2. Если значение < 15 то..., если значение > 20 то....
После включения устройства реле 1 должно циклически изменять состояние - включаться на Non секунд/минут/часов затем выключаться на Noff секунд/минут/часов.
А проблема наверное в том, что снимать показания датчика хочется чаще, чем крутится цикл состояний реле 1, что с делеями не получается.
Ну как, угадал?
Мне необходимо
температура меньше 15 -реле 2 выкл.
температура больше 20 -реле 2 вкл.
реле 1 выкл. -18 часов (64 800 000)
реле 1 вкл. -6 часов (21 600 000)
так понятнее ?
Не понятнее. Всё то же самое только вместо секунд уже какие-то часы появились...
Я таки попробую погадать и описать необходимое поведение программы по своему разумению. Я бы описал желаемое примерно так:
Есть датчик DHT подключенный к пину такому-то, реле 1 и реле 2 подключенные к пинам таким-то. Реле включаются подачей высокого (или низкого?) уровня. Начальное состояние реле при включении устройства должно быть такое-то (включено или выключено).
После включения устройства необходимо раз в N секунд/минут/часов снимать показания датчика и в зависимости от полученного значения изменять состояние реле 2. Если значение < 15 то..., если значение > 20 то....
После включения устройства реле 1 должно циклически изменять состояние - включаться на Non секунд/минут/часов затем выключаться на Noff секунд/минут/часов.
А проблема наверное в том, что снимать показания датчика хочется чаще, чем крутится цикл состояний реле 1, что с делеями не получается.
Ну как, угадал?
Все именно так ! Спасибо