added a new method acquireAndWait to make easy to use the lib and a example that use it

This commit is contained in:
Nicolas Sanz 2013-03-25 17:37:25 -03:00 committed by Nicolás Sanz
parent 95fa6826ce
commit 960cf5313b
3 changed files with 92 additions and 1 deletions

View File

@ -0,0 +1,84 @@
/*
Board int.0 int.1 int.2 int.3 int.4 int.5
Uno, Ethernet 2 3
Mega2560 2 3 21 20 19 18
Leonardo 3 2 0 1
Due (any pin, more info http://arduino.cc/en/Reference/AttachInterrupt)
This example, as difference to the other, make use of the new method acquireAndWait()
*/
#include <idDHT11.h>
int idDHT11pin = 2; //Digital pin for comunications
int idDHT11intNumber = 0; //interrupt number (must be the one that use the previus defined pin (see table above)
//declaration
void dht11_wrapper();
// Lib instantiate
idDHT11 DHT11(idDHT11pin,idDHT11intNumber,dht11_wrapper);
void setup()
{
Serial.begin(9600);
Serial.println("idDHT11 Example program");
Serial.print("LIB version: ");
Serial.println(IDDHT11LIB_VERSION);
Serial.println("---------------");
}
void dht11_wrapper() {
DHT11.isrCallback();
}
void loop()
{
Serial.print("\nRetrieving information from sensor: ");
Serial.print("Read sensor: ");
//delay(100);
int result = DHT11.acquireAndWait();
switch (result)
{
case IDDHTLIB_OK:
Serial.println("OK");
break;
case IDDHTLIB_ERROR_CHECKSUM:
Serial.println("Error\n\r\tChecksum error");
break;
case IDDHTLIB_ERROR_TIMEOUT:
Serial.println("Error\n\r\tTime out error");
break;
case IDDHTLIB_ERROR_ACQUIRING:
Serial.println("Error\n\r\tAcquiring");
break;
case IDDHTLIB_ERROR_DELTA:
Serial.println("Error\n\r\tDelta time to small");
break;
case IDDHTLIB_ERROR_NOTSTARTED:
Serial.println("Error\n\r\tNot started");
break;
default:
Serial.println("Unknown error");
break;
}
Serial.print("Humidity (%): ");
Serial.println(DHT11.getHumidity(), 2);
Serial.print("Temperature (oC): ");
Serial.println(DHT11.getCelsius(), 2);
Serial.print("Temperature (oF): ");
Serial.println(DHT11.getFahrenheit(), 2);
Serial.print("Temperature (K): ");
Serial.println(DHT11.getKelvin(), 2);
Serial.print("Dew Point (oC): ");
Serial.println(DHT11.getDewPoint());
Serial.print("Dew Point Slow (oC): ");
Serial.println(DHT11.getDewPointSlow());
delay(2000);
}

View File

@ -56,6 +56,12 @@ int idDHT11::acquire() {
} else } else
return IDDHTLIB_ERROR_ACQUIRING; return IDDHTLIB_ERROR_ACQUIRING;
} }
int idDHT11::acquireAndWait() {
acquire();
while(acquiring())
;
return getStatus();
}
void idDHT11::isrCallback() { void idDHT11::isrCallback() {
int newUs = micros(); int newUs = micros();
int delta = (newUs-us); int delta = (newUs-us);
@ -170,4 +176,4 @@ double idDHT11::getDewPointSlow() {
double T = log(VP/0.61078); // temp var double T = log(VP/0.61078); // temp var
return (241.88 * T) / (17.558-T); return (241.88 * T) / (17.558-T);
} }
// EOF // EOF

View File

@ -45,6 +45,7 @@ public:
void init(int pin, int intNumber,void (*isrCallback_wrapper)()); void init(int pin, int intNumber,void (*isrCallback_wrapper)());
void isrCallback(); void isrCallback();
int acquire(); int acquire();
int acquireAndWait();
float getCelsius(); float getCelsius();
float getFahrenheit(); float getFahrenheit();
float getKelvin(); float getKelvin();