From 5470163ff00f464417baac6c761c8740946df376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=9D=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2?= Date: Thu, 29 Feb 2024 10:30:13 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20DHT=5F22.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DHT_22.h | 65 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/DHT_22.h b/DHT_22.h index 8e575c1..066a85b 100644 --- a/DHT_22.h +++ b/DHT_22.h @@ -1,9 +1,56 @@ -#ifndef DHT_22_h -#define DHT_22_h -#include - -void DHT22_setup(); -int get_DHT_value_temperature(); -int get_DHT_value_humidity(); - -#endif /*DHT_22_h*/ \ No newline at end of file + +// Функция чтения данных с DHT +unsigned int dht_check() +{ + if ( dht_check_act ) + { + dht_check_act = false; +//-----[ 01. Старт, выжидание 18мс ]----- + if ( interrupt_flag == 1) + { + // Запускаем таймер на 18 мс посылка start на dht + Serial.print("Start DHT -> "); + + DHT_DDR |= (1 << DHT_BIT); // Пин как выход + DHT_PORT &= ~(1 << DHT_BIT); // Выход ноль + TCNT1 = 0; + OCR1A = 288; + TCCR1A = 0b00000000; + TIMSK1 = 0b00000010; + TCCR1B = 0b00000101; + } + + if ( interrupt_flag == 2) + { + DHT_PORT |= (1 << DHT_BIT); + DHT_DDR &= ~(1 << DHT_BIT); + dht_save_time_id = 0; + TCNT1 = 0; + OCR1A = 10000; + TCCR1A = 0b00000000; + TCCR1B = 0b10000001; + TIFR1 = 0b00000000; + TIMSK1 = 0b00100010; + dPos = 7; + dNum = 0; + dht_last_state = false; + } + // Вычисляем температуру и влажность + if ( dht_done ) + { + dht_done = false; + temperature = (data[3] * 0.1) + ((data[2] & 0b01111111) * 25.6); + if (data[2] & 0b10000000) temperature *= -1; + humidity = (data[1] * 0.1) + (data[0] * 25.6); + + // Выводим данные на UART + + Serial.print(humidity); + Serial.print("% "); + Serial.print(temperature); + Serial.println("C"); + + } + + } +} \ No newline at end of file