En esta sección aprenderás a programar un sensor digital de temperatura y humedad modelo AHT10 I2C , el objetivo es obtener la medición de humedad y temperatura del sensor y mostrar los valores en un Display OLED.
Sensor AHT10
El AHT10 es un sensor digital de humedad y temperatura producido por ASAIR Technologies. Utiliza un sensor de humedad capacitivo MEMS y un sensor de temperatura de banda de energía para medir la humedad relativa y la temperatura. El sensor tiene una interfaz de comunicación I2C. Es adecuado para su uso en una amplia variedad de aplicaciones, como sistemas de climatización, electrodomésticos, equipos médicos y más.

Características:
- Modelo: Módulo AHT10
- Tipo de interfaz: I2C (0x38)
- Voltaje de funcionamiento: 3.3V – 5V
- Rango de medición:
- Temperatura: -40°C a 85°C
- Humedad: 0% a 100% ±2 %RH
- Precisión de temperatura: ±0.3 °C
- Resolución de temperatura: 0.01 °C
- Resolución de humedad: 0.024%
- Precisión de humedad: 2%
- Dimensiones: 15.2mm x 10.6mm
- Peso: 2g
Circuito de conexión

Programación
Inicialmente se definen los parámetros de la comunicación I2c para el sensor.
#use i2c(Master,Fast, sda=PIN_B0, scl=PIN_B1, force_sw, stream=AHT10_stream)
Se incluye la librería del sensor ATH10.
#include "AHT10.c"
Se inicializan los parámetros del sensor.
AHT10_Begin();
Se definen las variables de tipo flotante para el registro de los valores de temperatura y humedad.
float hum, temp;
Se utiliza la función para hacer la lectura del valor de temperatura y humedad.
AHT10_Read(&hum, &temp);
Finalmente se muestran los valores en el Display OLED.
sprintf(texto,"HUM %f %c ",hum ,'%');
OLED_DrawText(1,1,texto,1);
sprintf(texto,"TEMP %f C ",temp);
OLED_DrawText(1,10,texto,1);
OLED_Display();//Muestra la informacion en la pantalla
Código completo
#FUSES NOMCLR
#use i2c(Master,Fast, sda=PIN_B0, scl=PIN_B1, force_sw, stream=AHT10_stream)
#use i2c(Master,Fast, sda=PIN_B0, scl=PIN_B1, force_sw, stream=OLED_stream)
#define SH1106_128_64 //DEFINE EL MODELO DE LA PANTALLA OLED
//#define SSD1306_128_64
#include "OLED_I2C.c"
#include "AHT10.c"
void main()
{
OLED_Begin();
OLED_ClearDisplay();
AHT10_Begin();
float hum=0, temp=0;
char texto[20];
while(TRUE)
{
AHT10_Read(&hum, &temp);
sprintf(texto,"HUM %f %c ",hum ,'%');
OLED_DrawText(1,1,texto,1);
sprintf(texto,"TEMP %f C ",temp);
OLED_DrawText(1,10,texto,1);
OLED_Display();//Muestra la informacion en la pantalla
}
}
