Помогите с гистерезисом

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

Всем доброго времени суток, помогите пожалуйста с кодом для гистерезиса. Будет работать нагреватель, при достижении до 25 градусов нагреватель должен отключаться далее при падении температуры менее 24.5 и ниже нагреватель должен включиться и опять при достижении 25 градусов выключаться. То есть гистерезис в 0.5 градуса.

if (temp =>25.0) {

   ОТКЛ

} else {

   ВКЛ

}

 

Клапауций 232
Offline
Зарегистрирован: 05.04.2016
if (temp <= 24.5) {включить нагреватель}
if (temp >= 25.0) {отключить нагреватель}

 

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

спасибо, туплю под вечер )

if (temp <= 24.5) {
  digitalWrite(8, HIGH);
}

if (temp >= 25.0) {
  digitalWrite(8, LOW);
}

if (digitalRead(8) == HIGH) {
  lcd.print("ON");
} else {
  lcd.print("OFF"); 
}

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

А почему не так?

if (temp <= 24.5) {
    digitalWrite(8, HIGH);
    lcd.print("ON");
    }

if (temp >= 25.0) {
    digitalWrite(8, LOW);
    lcd.print("OFF"); 
     }

 

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

qwone пишет:

А почему не так?

без else { трупрограммисту жизни нет

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

на дисплее когда гистерезис будет чихарда ибо уже не 25 но пока еще не 24.5, обнова дисплея 1 раз в секунду, там часы еще

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Sanyaba пишет:

на дисплее когда гистерезис будет чихарда ибо уже не 25 но пока еще не 24.5, обнова дисплея 1 раз в секунду, там часы еще

когда гистерезис, нужно печатать что-то типа "температура в норме - нагрев откл."

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

во-первых на дисплее 1602 не разгонишься, во-вторых это контроллер аквариума и лишняя соращенная информация тем более для мамы будет точно непонятна, так что пусть будет как есть

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Sanyaba пишет:

на дисплее когда гистерезис будет чихарда ибо уже не 25 но пока еще не 24.5

Не будет там никакой чехарды. Код в сообщениях #2 и #3 будет выводить ON и OFF на дисплей абсолютно одинаково - только во время переключения пина 8. Между значениями 24.5 и 25 ничего выводится не будет.

Нет смысла писать в пин, а потом читать его. Мы и так знаем состояние пина, ибо только что туда записали.

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

в том то и дело, когда гистерезис то никуда ничего не пишется а нужно знать состояние пина, если не чего не выводить то данные на дисплее съежают в лево или нужно выводить пустые строки, так что оставил как в третьем посте, пин 8 будет включать реле нагревателя...

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Sanyaba пишет:

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

Ну так мы знаем состояние пина. Мы же его ранее сами записали, с тех пор оно не поменялось.

Jeka_M пишет:

Код в сообщениях #2 и #3 будет выводить ON и OFF на дисплей абсолютно одинаково - только во время переключения пина 8. Между значениями 24.5 и 25 ничего выводится не будет.

Тут я не совсем правильно выразился. Код в сообщении #2 выводит на дисплей конечно чаще. Но смысла в этом нет, т.к. состояние пина будет повторяться. Состояние ON/OFF на дисплее будет меняться всё равно одинаково в обоих скетчах.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

а где взяли зеленый дисплей с кириллицей?

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Tomasina пишет:

а где взяли зеленый дисплей с кириллицей?

Думаю гдето ЗДЕСЬ

Logik
Offline
Зарегистрирован: 05.08.2014

Sanyaba пишет:

во-первых на дисплее 1602 не разгонишься, во-вторых это контроллер аквариума и лишняя соращенная информация тем более для мамы будет точно непонятна, так что пусть будет как есть

 

Так берите сразу железо пожирней. Я Вам вот что скажу, как человек третий год допиливающий контроллер аквариума - эта тема безконечна! Функционал устройства можна наращивать очень сильно и долго и слабый экран станет костью в горле.  У меня экран 2,8 дюйма с тачем.

Вот только вчера понял, что надо еще добавить напоминалку о внесении удобрений для растений, раз в 2 недели. И думаю что это тоже не конец доработок.

В общем сразу ставте хороший экран, много кнопок, а лучше тач, возможность аппаратного наращивания и прошивки в готовом изделии - не пожалеете.

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

Дисплей (зеленый), модуль i2C к нему, сам дисплей без кириллицы, а точнее дисплею одинаково что выводить ну вот библиотека без кириллицы.

Я поступил так, русскую букву "Л" я прорисовал тут далее:

перед setup 

byte elll[8] = {B00011,B00101,B00101,B01001,B01001,B10001,B10001,B00000};

в setup 

lcd.createChar(5, elll);

и уже в loop вывожу на дисплей

lcd.print("OTK\5"); // OTKЛ

или

lcd.print("BK\5"); // BKЛ

где \5 это буква "Л" а остальные английские

 

... а вообще нужно погуглить LCD 1602 RUS думаю уже умельцы запилили русскую локаль

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Tomasina пишет:

а где взяли зеленый дисплей с кириллицей?

он как бы не зелёный, а желающий быть жёлтым

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

"Из коробки" на дисплеях в цепи питания светодиода подсветки стоит SMD резистор на 100 Ом и яркость довольно сильная с таким номиналом да и свечение ближе к желтому, резистор смело можно менять на номинал 330-510 Ом для получения требуемой яркости (у меня 430 Ом) не забываем про настройку контраста для новой яркости. А если расколупать подсветку то можно влупить светодиод любого цвета...

Sergey001
Offline
Зарегистрирован: 04.12.2017

Добрый день, кто нибудь знает как уставноить гистерезис не в целых числах, а в десятичных например:

температура 25.4 < уставка 25.8 +0.2 = вкл реле. А по факту получается 26 < 26 +1

void sendUptime()
{
 
  float h = dht.readHumidity();
  float t = dht.readTemperature();
 
  Blynk.virtualWrite(10, t); // virtual pin
  Blynk.virtualWrite(11, h); // virtual pin
  bridge1.virtualWrite(V16, t); 
}
 
    }
      BLYNK_WRITE(V17)
    {
       value = param.asFloat();        
    }
 BLYNK_WRITE(V16)
    {
       pinData = param.asFloat();  
 
if (pinData >= value - 0.2)
        {digitalWrite(relay, HIGH); // set LED ON
         Blynk.virtualWrite(V2, 1);}
         else if (pinData <= value  +0.2)
         {digitalWrite(relay, LOW);
         Blynk.virtualWrite(V2, 0);}
где pinData действующее значение температуры 
value уставка которые мы выставляем с экрана смартфона.
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

pinData не объявлена же как флоат

Sergey001
Offline
Зарегистрирован: 04.12.2017

А как объявить как float помогите?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013