Commit 35574b82 authored by João Lino's avatar João Lino

Replaced DHT11 and adjusted parameters during tests.

parent 2c2e16d8
......@@ -3,7 +3,7 @@
dht DHT;
//#define __debug
#define __debug
#define PROGRAM_VERSION "0.4.0"
......@@ -17,23 +17,28 @@ dht DHT;
#define LED5Pin 8
#define LED6Pin 9
#define ButtonPin 13
#define TEMPERATURE_SAMPLES 10
int leds[LEDCount];
double Setpoint;
int SetpointMode;
boolean relayState;
double temperaturaQueAchava;
double temperaturaMedia[TEMPERATURE_SAMPLES];
int temperaturaMediaIndex;
boolean tempSensorOK;
//unsigned long elapsed;
void setup()
{
Serial.begin(115200);
Serial.println("Kegerator");
Serial.println("Greenhouse - for beer fermentation");
Serial.print("PROGRAM VERSION: ");
Serial.println(PROGRAM_VERSION);
Serial.print("\tDHT LIBRARY VERSION: ");
Serial.println(DHT_LIB_VERSION);
Serial.println();
Serial.println("Type, status, Humidity (%), Temperature (C), Relay State (ON\\OFF)");
Serial.println("Temp Sensor,\tSensor Status,\temperaturaAlvo (C),\temperaturaQueDiz (C),\ttempetaturaQueEuAcho (C),\tRelay State (ON\\OFF)");
leds[0] = LED1Pin;
leds[1] = LED2Pin;
......@@ -42,7 +47,7 @@ void setup()
leds[4] = LED5Pin;
leds[5] = LED6Pin;
Setpoint = 18.0;
SetpointMode = 0;
SetpointMode = 18;
temperaturaQueAchava = 200.0;
// Relay
......@@ -66,10 +71,24 @@ void setup()
// Button
pinMode(ButtonPin, INPUT);
for( temperaturaMediaIndex = 0; temperaturaMediaIndex < TEMPERATURE_SAMPLES; temperaturaMediaIndex++ ) {
temperaturaMedia[temperaturaMediaIndex] = Setpoint;
}
setLEDs(SetpointMode);
tempSensorOK = false;
//elapsed = millis();
}
void loop()
{
/*if ( millis() - 4000 > elapsed ) {
Serial.println("Temp Sensor,\tSensor Status,\temperaturaAlvo (C),\temperaturaQueDiz (C),\ttempetaturaQueEuAcho (C),\tRelay State (ON\\OFF)");
elapsed = millis();
}*/
if ( hasBtnPressed() ) {
// increase mode
......@@ -100,66 +119,107 @@ void loop()
int chk = DHT.read11(DHT11_PIN);
// debug received data
debugDHT(chk);
double temperaturaQueDiz = DHT.temperature;
double tempetaturaQueEuAcho;
if (temperaturaQueAchava == 200.0)
temperaturaQueAchava = temperaturaQueDiz;
if (temperaturaQueAchava > temperaturaQueDiz)
tempetaturaQueEuAcho = temperaturaQueAchava - 0.25;
else if (temperaturaQueAchava < temperaturaQueDiz)
tempetaturaQueEuAcho = temperaturaQueAchava + 0.25;
else
tempetaturaQueEuAcho = temperaturaQueAchava;
//tempetaturaQueEuAcho = temperaturaQueDiz;
#ifdef __debug
Serial.print("temperaturaAlvo = ");
Serial.print(Setpoint, 1);
Serial.print(", temperaturaQueDiz = ");
Serial.print(temperaturaQueDiz, 1);
Serial.print(", tempetaturaQueEuAcho = ");
Serial.print(tempetaturaQueEuAcho, 1);
Serial.print(", ");
#endif
tempSensorOK = debugDHT(chk);
if ( tempetaturaQueEuAcho > (Setpoint + 1.0) ) {
if(tempSensorOK) {
// turn on compressor to start cooling
relayState = true;
digitalWrite( RelayPin, LOW );
}
else {
if ( tempetaturaQueEuAcho <= (Setpoint - 1.0) ) {
double temperaturaQueDiz = DHT.temperature;
if (temperaturaQueAchava == 200.0) {
temperaturaQueAchava = temperaturaQueDiz;
}
// Calcular a temperatura de processamento
temperaturaMediaIndex++;
if ( temperaturaMediaIndex >= TEMPERATURE_SAMPLES ) {
temperaturaMediaIndex = 0;
}
// turn off compressor to stop cooling
relayState = false;
digitalWrite( RelayPin, HIGH );
/*Serial.print("t[");
Serial.print(temperaturaMediaIndex);
Serial.print("]=");
Serial.print(temperaturaQueAchava);*/
if (temperaturaQueDiz > (temperaturaQueAchava + 0)) {
//Serial.print("+0.1, ");
temperaturaMedia[temperaturaMediaIndex] = (temperaturaQueAchava + 0.2);
}
else {
if (temperaturaQueDiz < (temperaturaQueAchava - 0.1)) {
//Serial.print("-0.1, ");
temperaturaMedia[temperaturaMediaIndex] = (temperaturaQueAchava - 1.0);
}
else {
//Serial.print(", ");
temperaturaMedia[temperaturaMediaIndex] = temperaturaQueDiz;
}
}
}
#ifdef __debug
if (relayState) {
Serial.println( "ON" );
}
else {
Serial.println( "OFF" );
double tempetaturaQueEuAcho = 0.0;
for ( int i = 0; i < TEMPERATURE_SAMPLES; i++ ) {
/*Serial.print(temperaturaMedia[i]);
Serial.print(" ");*/
tempetaturaQueEuAcho += temperaturaMedia[i];
}
tempetaturaQueEuAcho /= TEMPERATURE_SAMPLES;
//Serial.print(", ");
/*
if (temperaturaQueAchava > temperaturaQueDiz)
tempetaturaQueEuAcho = temperaturaQueAchava - 0.25;
else if (temperaturaQueAchava < temperaturaQueDiz)
tempetaturaQueEuAcho = temperaturaQueAchava + 0.25;
else
tempetaturaQueEuAcho = temperaturaQueAchava;
//tempetaturaQueEuAcho = temperaturaQueDiz;
*/
#ifdef __debug
Serial.print("");
Serial.print(Setpoint, 2);
Serial.print(", ");
Serial.print(temperaturaQueDiz, 2);
Serial.print(", ");
Serial.print(tempetaturaQueEuAcho, 2);
Serial.print(", ");
#endif
if ( tempetaturaQueEuAcho >= (Setpoint + 1.0) ) {
// turn on compressor to start cooling
relayState = true;
digitalWrite( RelayPin, LOW );
}
else {
if ( tempetaturaQueEuAcho <= (Setpoint - 0.0) ) {
// turn off compressor to stop cooling
relayState = false;
digitalWrite( RelayPin, HIGH );
}
}
#ifdef __debug
if (relayState) {
Serial.println( "ON" );
}
else {
Serial.println( "OFF" );
}
#endif
temperaturaQueAchava = tempetaturaQueEuAcho;
delay(50);
//delay(100);
}
#endif
temperaturaQueAchava = tempetaturaQueEuAcho;
delay(50);
}
void setLEDs( int number ) {
int calcNumber = number;
for ( int i = (LEDCount - 1); i >= 0; i++ ) {
boolean zero = calcNumber % 2 == 0 ? true : false;
for ( int i = (LEDCount - 1); i >= 0; i-- ) {
boolean zero = ((calcNumber % 2) == 0) ? true : false;
calcNumber /= 2;
if (zero) {
......@@ -188,15 +248,18 @@ boolean hasBtnPressed() {
}
}
void debugDHT( int chk ) {
boolean debugDHT( int chk ) {
boolean ret = false;
#ifdef __debug
Serial.print("DHT11, ");
//Serial.print("DHT11, ");
#endif
switch (chk)
{
case DHTLIB_OK:
ret = true;
#ifdef __debug
Serial.print("DHT11, ");
Serial.print("OK, ");
#endif
break;
......@@ -207,7 +270,14 @@ void debugDHT( int chk ) {
Serial.print("Time out error, ");
break;
case DHTLIB_ERROR_CONNECT:
Serial.print("Connect error, ");
//Serial.print("Connect error, ");
/*
relayState = false;
digitalWrite( RelayPin, HIGH );
setLEDs(63);
while(true) Serial.println("ERROR, SAFEMODE ON!!!!");
*/
break;
case DHTLIB_ERROR_ACK_L:
Serial.print("Ack Low error, ");
......@@ -224,5 +294,7 @@ void debugDHT( int chk ) {
//Serial.print(DHT.humidity, 1);
//Serial.print(", ");
#endif
return ret;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment