Как получить однократно исходное значения с датчика?
- Войдите на сайт для отправки комментариев
Добрый день!
Имеется Ардуина Уно, на которой собрана схема из датчика 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 , смысл такой, что бы управлять вентилятором в подвале.
питание хочу организовать от батарейки типа крона.
вопрос - нужно ли на реле делать свое питание, не будет ли оно слишком много потреблять энергии и батарейка быстро сядет?
К вентилятору питание идет? Вот туда же БП и примотайте, не ждите чуда от кроны и пр.