arduino/libraries/DHT20/examples/DHT20_I2C_speed/DHT20_I2C_speed.ino
2026-09-27 17:21:39 +02:00

104 lines
2.1 KiB
C++

//
// FILE: DHT20_I2C_speed.ino
// AUTHOR: Rob Tillaart
// PURPOSE: Demo for DHT20 I2C humidity & temperature sensor
// URL: https://github.com/RobTillaart/DHT20
//
// Always check datasheet - front view
//
// +--------------+
// VDD ----| 1 |
// SDA ----| 2 DHT20 |
// GND ----| 3 |
// SCL ----| 4 |
// +--------------+
// NOTE datasheet states 400 KHz as maximum
#include "DHT20.h"
DHT20 DHT;
uint32_t start, stop;
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("DHT20 LIBRARY VERSION: ");
Serial.println(DHT20_LIB_VERSION);
Serial.println();
Serial.println("\nNOTE: datasheet states 400 KHz as maximum.\n");
Wire.begin();
DHT.begin(); // ESP32 default pins 21, 22
delay(2000);
for (uint32_t speed = 50000; speed < 850000; speed += 50000)
{
Wire.setClock(speed);
Serial.print(speed);
Serial.print("\t");
Serial.print(DHT.read()); // status
Serial.print("\t");
Serial.print(DHT.getHumidity(), 1);
Serial.print("\t");
Serial.print(DHT.getTemperature(), 1);
Serial.println();
delay(1000);
}
Serial.println();
for (uint32_t speed = 50000; speed < 850000; speed += 50000)
{
Wire.setClock(speed);
start = micros();
DHT.read();
stop = micros();
Serial.print(speed);
Serial.print("\t");
Serial.print(stop - start); // time
Serial.print("\t");
Serial.print(DHT.getHumidity(), 1);
Serial.print("\t");
Serial.print(DHT.getTemperature(), 1);
Serial.println();
delay(1000);
}
Serial.println();
for (uint32_t speed = 50000; speed < 850000; speed += 50000)
{
DHT.requestData();
while (DHT.isMeasuring());
Wire.setClock(speed);
start = micros();
DHT.readData();
stop = micros();
DHT.convert();
Serial.print(speed);
Serial.print("\t");
Serial.print(stop - start); // time
Serial.print("\t");
Serial.print(DHT.getHumidity(), 1);
Serial.print("\t");
Serial.print(DHT.getTemperature(), 1);
Serial.println();
delay(1000);
}
Serial.println("\ndone...");
}
void loop()
{
}
// -- END OF FILE --