Как получить однократно исходное значения с датчика?
- Войдите на сайт для отправки комментариев
Добрый день!
Имеется Ардуина Уно, на которой собрана схема из датчика 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);
}
}
Вы в setup() переменную запихиваете прямо с типом float, поди?
Вы в setup() переменную запихиваете прямо с типом float, поди?
я пробовал и так и без типа, все равно не получается
Т.е. если в setup() скетча из #1 вставить, например, hum_work=50.0; например, то в loop() эта переменная останется в значении 10.0?
Т.е. если в 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 , смысл такой, что бы управлять вентилятором в подвале.
питание хочу организовать от батарейки типа крона.
вопрос - нужно ли на реле делать свое питание, не будет ли оно слишком много потреблять энергии и батарейка быстро сядет?
К вентилятору питание идет? Вот туда же БП и примотайте, не ждите чуда от кроны и пр.