ATH15溫濕度感測器_簡易藍牙傳輸_教案.pdf
#include <Wire.h>
#include <BluetoothSerial.h> // 匯入藍牙序列通訊的函式庫
#define AHT15_ADDRESS 0x38
#define AHT15_RESET 0xBA
#define AHT15_INIT 0xBE
#define AHT15_START_MEASUREMENT 0xAC
BluetoothSerial BT; // 宣告藍牙物件,名稱為BT
void setup() {
Wire.begin();
Serial.begin(115200);
BT.begin("Denny0628"); // 請改名例如英文+ 生日
// Reset sensor
Wire.beginTransmission(AHT15_ADDRESS);
Wire.write(AHT15_RESET);
Wire.endTransmission();
delay(20);
// Initialize sensor
Wire.beginTransmission(AHT15_ADDRESS);
Wire.write(AHT15_INIT);
Wire.write(0x08);
Wire.write(0x00);
Wire.endTransmission();
delay(10);
}
void loop() {
// Start measurement
Wire.beginTransmission(AHT15_ADDRESS);
Wire.write(AHT15_START_MEASUREMENT);
Wire.write(0x33);
Wire.write(0x00);
Wire.endTransmission();
delay(80);
// Read data
Wire.requestFrom(AHT15_ADDRESS, 6);
uint8_t data[6];
for (int i = 0; i < 6; i++) {
data[i] = Wire.read();
}
// Calculate humidity and temperature
uint32_t rawHumidity = ((uint32_t)data[1] << 12) | ((uint32_t)data[2] << 4) | (data[3] >> 4);
float humidity = rawHumidity * 100.0 / (1 << 20);
uint32_t rawTemperature = (((uint32_t)data[3] & 0xF) << 16) | ((uint32_t)data[4] << 8) | data[5];
float temperature = ((200.0 * rawTemperature) / (1 << 20)) - 50;
// Print results in Serial Monitor
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print("% , ");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println("°C");
// 在藍牙上打印溫度和濕度
BT.print(temperature); // 將溫度值透過藍牙傳輸
BT.print("*C, ");
BT.print(humidity); // 將濕度值透過藍牙傳輸
BT.println(" H");
delay(2500);
}