# **AHT20溫溼度感測器 Liabrary for esp32**
___
#### AHT20是一款基於i2c通訊匯流排進行資料傳輸的高精度溫濕度感測器,本節將介紹如何以ESP32使用JM_AHT20來讀取溫度和濕度的資料。
### 1. 下載此JMAHT20壓縮檔,並匯入至Arduino

___

### 2. include JMAHT20.h
```c
#ifdef __cplusplus
extern "C"{
#include "JM_AHT20.h"
}
#endif
```
### 3. 啟用並配置ESP32 I2C通訊界面
```c
#define SDA_PIN 21
#define SCL_PIN 22
#define I2C_MASTER_NUM 0 /*!< esp32內部有2個I2C控制器,我們使用第1個(0)控制器*/
#define I2C_MASTER_FREQ_HZ 400000 /*!< I2C master clock frequency,400KHz */
#define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master doesn't need buffer */
#define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master doesn't need buffer */
static esp_err_t i2c_master_init(int sda_io_num, int scl_io_num){
int i2c_master_port = I2C_MASTER_NUM;
i2c_config_t conf = {
.mode = I2C_MODE_MASTER,
.sda_io_num = sda_io_num,
.scl_io_num = scl_io_num,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master = {
.clk_speed = I2C_MASTER_FREQ_HZ,
}
};
i2c_param_config(i2c_master_port, &conf);
return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}
static esp_err_t init_i2c(void){
while(i2c_master_init(SDA_PIN, SCL_PIN) != ESP_OK){
vTaskDelay(20 / portTICK_PERIOD_MS);
}
return ESP_OK;
}
```
### 3. 實例化AHT20 為 aht20
```c
AHT20 aht20;
```
### 4. 初始化 aht20
```c
init_aht20(&aht20, AHT20_ADDRESS);
```
### 5. 讀取溫度/濕度
```c
aht20.get_temperature(&aht20)
aht20.get_humidity(&aht20)
```
---
# **JMAHT20 API**
## **init_aht20**
---
##### This function used to initialize aht20 and create a thread to handle sampling data
* struct aht20: 實例化之後的aht20物件
* uint8_t slave_addr: aht20 在i2c中的從端位址
---
## **get_temperature**
---
##### This function used to get temperature from aht20
* struct aht20: 實例化之後的aht20物件
#### return : temperature (float)
---
## **get_humidity**
---
##### This function used to get humidity from aht20
* struct aht20: structure of AHT20
#### return : humidity (float)
---
### 範例程式
[https://github.com/JiaMing3a713229/AHT20_JM](https://github.com/JiaMing3a713229/AHT20_JM)
---
### 執行結果
