I'm trying to get humidity and temperature with a DHT-11 sensor interfaced with an ATMega16 at PIN no. 39 (Port A1).
Now, there aren't much (if any) libraries available in the internet, which I can use for ATMega and DHT-11. All the available ones seem to be only for Arduinos. I'm totally stuck here.
I got one set of dht11 c and h files for some Arduino and edited it. I wrote a program, and I've spent hours trying to get it work. But it does not. Could you please help me?
This is my C program:
#include <avr/io.h> // special function registers #include <stdio.h> // sprintf() #define F_CPU 4000000 // 4MHz Internal Clock #include <util/delay.h> #include "dht.h" #include "lcd.h" //Fleury #define DHTTYPE DHT11 // DHT 11 int main(void) { { lcd_init(LCD_DISP_ON); lcd_puts("DHT11 initializing!"); _delay_ms(2000); } while (1) { lcd_clrscr(); float h = dht_gethumidity; float t = dht_gettemperature; lcd_gotoxy(0,0); lcd_puts("Humidity: ", h); lcd_gotoxy(0,1); lcd_puts("Temp.: ", t); _delay_ms(1500); } }
This is my DHT.h file:
#ifndef DHT_H_ #define DHT_H_ #include <stdio.h> #include <avr/io.h> //setup port #define DHT_DDR DDRA #define DHT_PORT PORTA #define DHT_PIN PINA #define DHT_INPUTPIN PA1 //sensor type #define DHT_DHT11 1 #define DHT_DHT22 2 #define DHT_TYPE DHT_DHT22 //enable decimal precision (float) #if DHT_TYPE == DHT_DHT11 #define DHT_FLOAT 0 #elif DHT_TYPE == DHT_DHT22 #define DHT_FLOAT 1 #endif //timeout retries #define DHT_TIMEOUT 200 //functions #if DHT_FLOAT == 1 extern int8_t dht_gettemperature(float *temperature); extern int8_t dht_gethumidity(float *humidity); extern int8_t dht_gettemperaturehumidity(float *temperature, float *humidity); #elif DHT_FLOAT == 0 extern int8_t dht_gettemperature(int8_t *temperature); extern int8_t dht_gethumidity(int8_t *humidity); extern int8_t dht_gettemperaturehumidity(int8_t *temperature, int8_t *humidity); #endif #endif