#ifndef F_CPU
#define F_CPU 8000000
#endif

#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <stdio.h> 
#include <string.h> 
#include <inttypes.h> 
//#include "twimaster.c"	//	-> bmp085 is meghívja
#include "bmp085/bmp085.c"
//#include "USART_328.h"
#include "lcd_pi.c"


#define htu21	0x80 // write
#define temp	0xE3
#define hum		0xE5

uint8_t high, low, crc;
uint16_t data;

long l;
double d;

double humidity, temperature;

char a[10];

int main(void)
{			
	i2c_init();
	bmp085_init();
	initLCD();
//	uart_init(9600);
	_delay_ms(100);
	lcd_clear();
	
	while(1)
	{
	i2c_start_wait(htu21+I2C_WRITE);
	i2c_write(temp);
	i2c_rep_start(htu21+I2C_READ);
	high = i2c_readAck();
	low = i2c_readAck();
	crc = i2c_readNak();
	i2c_stop();	
	
	data=(high<<8)+((low)&(0b11111100));
//	temperature=-46.86+175.72*data/65536;

	dtostrf(temperature,5,1,a);
	lcd_goto(1,1);
	lcd_string(a);
	lcd_string("ßC");
		
	i2c_start_wait(htu21+I2C_WRITE);
	i2c_write(hum);
	i2c_rep_start(htu21+I2C_READ);
	high = i2c_readAck();
	low = i2c_readAck();
	crc = i2c_readNak();
	i2c_stop();	
	
	data=(high<<8)+((low)&(0b11111100));
//	humidity=data*(125/65536)-6;	//data*0.0019-6; -> ezzel valamiért nem jó, fura hosszú errort ad sor megjelölés nélkül

	dtostrf(humidity,4,1,a);
	lcd_goto(1,10);
	lcd_string(a);
	lcd_string("%RH");


	d = bmp085_gettemperature();
	l = bmp085_getpressure()/100;
	ltoa(l, a, 10);
	lcd_goto(2,1);
	lcd_string(a);
	lcd_string("hPa");

	_delay_ms(500);
	}//while
}//main
