Как получить однократно исходное значения с датчика?

mishgan80
Offline
Зарегистрирован: 18.03.2018

Добрый день! 

Имеется Ардуина Уно, на которой собрана схема из датчика DHT-22, 2 кнопок и диода. Смысл такой - датчик получает значение влажности, если оно  превышает установленное значение, то загорается диод. Устанолвенное зачение можно коррректировать кнопками.

Вопрос вот чем - изначально (в коде это видно) занчение сработки (назовем  это так) -устанвливается равным - 10.0, а дальше регулируется кнопками.

Вопрос - как сделать что бы, при старте программы  в занчени сработки попадало - текущая влажность и фиксировалась там, дальше бы с ней можно было бы производить всякие манипуляции (убавлять там или прибавлять). Пробовал засунуть строку - hum_work = dht.readHumidity(); в void_setup, но оно там и остается, в void_loop перменная hum_work не видится. 

 

#include <DHT.h>
#define DHTPIN 2
#define LED_PIN  3
DHT dht(DHTPIN, DHT22);
float hum_work=10.0;
int delta=1;
int flag=0;


void setup() 
 { 
 pinMode(LED_PIN, OUTPUT);
 Serial.begin(9600);
 dht.begin(); 
 } 



 void loop() 
{
 delay(100);
 float h = dht.readHumidity();
 float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) 
  {
    Serial.println("Не удается считать показания");
    return;
  }
  

 if(digitalRead(8)==HIGH&&flag==0)
 {
  hum_work = hum_work + delta;
    if(hum_work>100)
    {hum_work = 100;}
 Serial.println(hum_work);
 Serial.println(h);
 flag=1;
 delay(10);
 }
if(digitalRead(9)==HIGH&&flag==0)
 {
 hum_work = hum_work - delta;
    if(hum_work<10)
    {hum_work = 10;}
 Serial.println(hum_work);
 Serial.println(h);
 flag=2;
 delay(10);
 }
 
if(digitalRead(8)==LOW&&flag==1)
{ 
   flag=0;
}
if(digitalRead(9)==LOW&&flag==2)
{ 
   flag=0;
}


if(h>hum_work)
  {
  digitalWrite(LED_PIN,HIGH);
  }
  else
  {
  digitalWrite(LED_PIN,LOW);
 } 


}

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Вы в setup() переменную запихиваете прямо с типом float, поди?

mishgan80
Offline
Зарегистрирован: 18.03.2018

sadman41 пишет:

Вы в setup() переменную запихиваете прямо с типом float, поди?

я пробовал и так и без типа, все равно не получается

sadman41
Offline
Зарегистрирован: 19.10.2016

Т.е. если в setup() скетча из #1 вставить, например, hum_work=50.0; например, то в loop() эта переменная останется в значении 10.0?

mishgan80
Offline
Зарегистрирован: 18.03.2018

sadman41 пишет:

Т.е. если в setup() скетча из #1 вставить, например, hum_work=50.0; например, то в loop() эта переменная останется в значении 10.0?

все заработало, строчка hum_work=dht.readHumidity(); в setup прокатила, все работает как надо

видимо я лох)))

у меня есть  еще вопрос:

вместо диода я хочу поставить вот таоке реле - https://ru.aliexpress.com/item/Smart-Electronics-5V-1-One-Channel-Relay-Module-Low-Level-for-SCM-Household-Appliance-Control-for/32708600505.html?spm=a2g0s.9042311.0.0.xieN3u , смысл  такой, что бы управлять вентилятором в подвале.

питание хочу организовать от батарейки типа крона.

вопрос - нужно ли на реле делать свое питание, не будет ли оно слишком много потреблять энергии и батарейка быстро сядет? 

 

 

 

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

К вентилятору питание идет? Вот туда же БП и примотайте, не ждите чуда от кроны и пр.