X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=DHT11_DS18B20_temperature%2FDHT11_DS18B20_temperature.ino;fp=DHT11_DS18B20_temperature%2FDHT11_DS18B20_temperature.ino;h=b0b8c2cfdde506900b038e2910da1f0e77c8a501;hb=c4014e038e199e6ff9f25d15baaa4f1d6f4d409f;hp=0000000000000000000000000000000000000000;hpb=4b6df4cb1c25f2055099647be5754a410deb420b;p=Arduino diff --git a/DHT11_DS18B20_temperature/DHT11_DS18B20_temperature.ino b/DHT11_DS18B20_temperature/DHT11_DS18B20_temperature.ino new file mode 100644 index 0000000..b0b8c2c --- /dev/null +++ b/DHT11_DS18B20_temperature/DHT11_DS18B20_temperature.ino @@ -0,0 +1,135 @@ +// +// FILE: dht11_test1.pde +// PURPOSE: DHT11 library test sketch for Arduino +// + +//Celsius to Fahrenheit conversion +double Fahrenheit(double celsius) +{ + return 1.8 * celsius + 32; +} + +// fast integer version with rounding +//int Celcius2Fahrenheit(int celcius) +//{ +// return (celsius * 18 + 5)/10 + 32; +//} + + +//Celsius to Kelvin conversion +double Kelvin(double celsius) +{ + return celsius + 273.15; +} + +// dewPoint function NOAA +// reference: http://wahiduddin.net/calc/density_algorithms.htm +double dewPoint(double celsius, double humidity) +{ + double RATIO = 373.15 / (273.15 + celsius); // RATIO was originally named A0, possibly confusing in Arduino context + double SUM = -7.90298 * (RATIO - 1); + SUM += 5.02808 * log10(RATIO); + SUM += -1.3816e-7 * (pow(10, (11.344 * (1 - 1/RATIO ))) - 1) ; + SUM += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ; + SUM += log10(1013.246); + double VP = pow(10, SUM - 3) * humidity; + double T = log(VP/0.61078); // temp var + return (241.88 * T) / (17.558 - T); +} + +// delta max = 0.6544 wrt dewPoint() +// 5x faster than dewPoint() +// reference: http://en.wikipedia.org/wiki/Dew_point +double dewPointFast(double celsius, double humidity) +{ + double a = 17.271; + double b = 237.7; + double temp = (a * celsius) / (b + celsius) + log(humidity/100); + double Td = (b * temp) / (a - temp); + return Td; +} + + +#include + +dht11 DHT11; + +#define DHT11PIN 2 + +#include +#include + +// Data wire is plugged into port 2 on the Arduino +#define ONE_WIRE_BUS 10 + +// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) +OneWire oneWire(ONE_WIRE_BUS); + +// Pass our oneWire reference to Dallas Temperature. +DallasTemperature sensors(&oneWire); + +void setup() +{ + Serial.begin(9600); + Serial.println("DHT11 TEST PROGRAM "); + Serial.print("LIBRARY VERSION: "); + Serial.println(DHT11LIB_VERSION); + Serial.println(); + sensors.begin(); +} + +void loop() +{ + Serial.println("\n"); + + int chk = DHT11.read(DHT11PIN); + + Serial.print("DHT11 Read sensor: "); + switch (chk) + { + case DHTLIB_OK: + Serial.println("OK"); + break; + case DHTLIB_ERROR_CHECKSUM: + Serial.println("Checksum error"); + break; + case DHTLIB_ERROR_TIMEOUT: + Serial.println("Time out error"); + break; + default: + Serial.println("Unknown error"); + break; + } + + Serial.print("Humidity (%): "); + Serial.println((float)DHT11.humidity, 2); + + Serial.print("Temperature (oC): "); + Serial.println((float)DHT11.temperature, 2); + + Serial.print("Temperature (oF): "); + Serial.println(Fahrenheit(DHT11.temperature), 2); + + Serial.print("Temperature (K): "); + Serial.println(Kelvin(DHT11.temperature), 2); + + Serial.print("Dew Point (oC): "); + Serial.println(dewPoint(DHT11.temperature, DHT11.humidity)); + + Serial.print("Dew PointFast (oC): "); + Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity)); + + + Serial.print("DS18B20 Requesting temperatures..."); + sensors.requestTemperatures(); // Send the command to get temperatures + Serial.println("DONE"); + + sensors.requestTemperatures(); // Send the command to get temperatures + Serial.print("Temperature for the device 1 (index 0) is: "); + Serial.println(sensors.getTempCByIndex(0)); + + delay(2000); +} +// +// END OF FILE +//