#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/i2c.h"
#define I2C_PORT i2c0
#define AHT10_ADDR 0x23
#define I2C_SDA 4
#define I2C_SDL 5
#define BH1750_CONTINUOUS_HIGH_RES_MODE 0x10
void aht10_init() {
i2c_init(I2C_PORT, 100000); // 100kHz
gpio_set_function(I2C_SDA, GPIO_FUNC_I2C); // SDA
gpio_set_function(I2C_SDL, GPIO_FUNC_I2C); // SCL
gpio_pull_up(I2C_SDA);
gpio_pull_up(I2C_SDL);
}
void aht10_config(){
uint8_t config = 0x10;
i2c_write_blocking(I2C_PORT, AHT10_ADDR, &config, 1, false);
sleep_ms(180);
}
float read_temperature() {
uint8_t data[4];
i2c_read_blocking(I2C_PORT, AHT10_ADDR, data, 4, false);
float temperature = data[0] ;
float humidity = data[1];
return temperature;
}
void read_sensor(float *temperature, float *humidity) {
uint8_t data[4];
i2c_read_blocking(I2C_PORT, AHT10_ADDR, data, 4, false);
*temperature = data[0]; // Escreve no endereço passado
*humidity = data[1]; // Escreve no outro endereço
}
int main() {
stdio_init_all();
aht10_init();
aht10_config();
float temp, hum;
while (1) {
read_sensor(&temp, &hum);
printf("Temperatura: %.1f°C\n", temp);
printf("Umidade: %.1f %%\n", hum);
sleep_ms(2000);
}
}