diff --git a/DHT_22.h b/DHT_22.h index 066a85b..3631707 100644 --- a/DHT_22.h +++ b/DHT_22.h @@ -1,56 +1,20 @@ +#ifndef DHT_H +#define DHT_H + +// Определения портов и битов +#define DHT_PORT PORTB +#define DHT_DDR DDRB +#define DHT_PIN PINB +#define DHT_BIT 0 + // Функция чтения данных с 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 -> "); +bool dht_check(void); +float dht_temperature(); +float dht_humidity(); - DHT_DDR |= (1 << DHT_BIT); // Пин как выход - DHT_PORT &= ~(1 << DHT_BIT); // Выход ноль - TCNT1 = 0; - OCR1A = 288; - TCCR1A = 0b00000000; - TIMSK1 = 0b00000010; - TCCR1B = 0b00000101; - } +void T1_CAPT(); +void T0_CA(); +void T1_CA(); - 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 +#endif /*DHT_22_H*/ \ No newline at end of file