Part 2
/*** Read in sensor values and change to fit actual temp/hum/ppm values*/
therm1[ARRAY_SIZE -1] = analogRead(THERM1);
int temp1 = mov_avg(therm1);
thermValue1 = (temp1 - TEMPERATURE_C)/TEMPERATURE_M; // x = (y-c)/m
therm2[ARRAY_SIZE -1] = analogRead(THERM2); //thermValue2 = analogRead(THERM2);
int temp2 = mov_avg(therm2);
thermValue2 = (temp2- TEMPERATURE_C) /TEMPERATURE_M;
int hum_temp = pulseIn(HUMIDITY2,HIGH,2000); //
if (hum_temp > 40 ) //Remove some non readings which give huge negative numbers
{
humval[ARRAY_SIZE -1] = hum_temp;
hum_temp = mov_avg(humval);
humValue = (hum_temp - HUMIDITY_C)/HUMIDITY_M; // y -c/M = x
}
int c_temp = analogRead(CARBONDI3);
Serial.print(c_temp);
/*if (( c_temp > 0 ) && (c_temp <300)) //stops unecessary calcs which grind arduino to a halt
{*/
carbonD[ARRAY_SIZE -1] = c_temp;
c_temp = mov_avg(carbonD);
Serial.print(":");
Serial.print(c_temp);
float c_float = c_temp - Carbon_C; // For ease of use in power function
c_float = c_float/Carbon_M;
Serial.print(":");
Serial.print(c_float);
carbonDiVal = pow(2.718,c_float);
//}
Serial.print(":");
Serial.println(carbonDiVal);
/**Add first line of Display**/
if (configure == 0)
{
lcd.cursorTo(1,0);
lcd.println("T1 T2 Hu CO2");
}
/**** Add second line of the Display *****/
if (configure == 0)
{
lcd.cursorTo(2,0);
itoa(thermValue1, buf, 10);
lcd.println(buf);
lcd.cursorTo(2,3);
itoa(thermValue2, buf, 10);
lcd.println(buf);
lcd.cursorTo(2,8);
lcd.println(" ");
lcd.cursorTo(2,6);
itoa(humValue, buf, 10);
lcd.println(buf);
lcd.cursorTo(2,12);
lcd.println(" ");
lcd.cursorTo(2,9);
itoa(carbonDiVal, buf, 10);
lcd.println(buf);
}
/*Print Output Values*/
/*
Serial.print(thermValue1);
Serial.print(":");
Serial.print(thermValue2);
Serial.print(":");
Serial.print(hum_temp); //usually humValue
Serial.print(":");
Serial.print(carbonDiVal);
Serial.println(":");
*/
/* PRINT ARRAYS THAT ARE AVERAGED
Serial.print("**Therm1*");
Serial.print(thermValue1);
Serial.print("*(");
for( i=0; i<ARRAY_SIZE; i++)
{
Serial.print(therm1[i]);
Serial.print(":");
}
Serial.print(")**Therm2*");
Serial.print(thermValue2);
Serial.print("*(");
for( i=0; i<ARRAY_SIZE; i++)
{
Serial.print(therm2[i]);
Serial.print(":");
}
Serial.print(")**Humid*");
Serial.print(humValue);
Serial.print("*(");
for( i=0; i<ARRAY_SIZE; i++)
{
Serial.print(humval[i]);
Serial.print(":");
}
Serial.print(")**carbonD*");
Serial.print(carbonDiVal);
Serial.print("*(");
for( i=0; i<ARRAY_SIZE; i++)
{
Serial.print(carbonD[i]);
Serial.print(":");
}
Serial.println(")");
*/
}
/********************************************/
/*EEPROM STORAGE CODE *********************/
if(millis() < time_eeprom) { time_eeprom = millis(); }
/**Put values into eeprom*/
if(millis() - time_eeprom > EE_PROM_INTERVAL)
{
time_eeprom = millis();
EEPROM.write((k*4),(thermValue1));
EEPROM.write((k*4+1),(thermValue2));
EEPROM.write((k*4+2),(humValue));
EEPROM.write((k*4+3),(carbonDiVal/10));
k=k+1;
if(k>=ARRAY_STORE) { k=0; }
}
/**********************************************/
/*******************************************************/
/*RELAY Changes and value checks, after time INTERVAL***/
if( millis() < last_check ) { last_check = millis(); }
if (millis() - last_check > INTERVAL)
{
last_check = millis(); //left out until final test, no wait 30sec
//Temperature 1 check and Relay Change
lcd.cursorTo(1,14);
if (thermValue1 > (heatTrigger1 +TEMP_HI) ) {
digitalWrite(RELAY1, LOW);
lcd.println(" "); }
if (thermValue1 < (heatTrigger1 -TEMP_LO) ) {
digitalWrite(RELAY1, HIGH);
lcd.println("*"); }
//Temperature 2 and Relay Change
lcd.cursorTo(1,15);
if (thermValue2 > (heatTrigger2 +TEMP_HI) ) {
digitalWrite(RELAY2, LOW);
lcd.println(" ");}
if (thermValue2 < (heatTrigger2 -TEMP_LO) ) {
digitalWrite(RELAY2, HIGH);
lcd.println("*"); }
//Carbon Dioxide check and Relay Change
lcd.cursorTo(2,15);
if ( carbonDiVal < C02Trigger- CO2_LO ) {
digitalWrite(RELAY4, LOW);
lcd.println(" "); }
if ( carbonDiVal > C02Trigger+ CO2_HI ) {
digitalWrite(RELAY4, HIGH);
lcd.println("*"); }
//Humidity Check and Relay change
lcd.cursorTo(2,14);
if ( (humValue > HumTrigger+ HUM_HI ) || (humValue == -HUMIDITY_C)) {
digitalWrite(RELAY3, LOW);
lcd.println(" "); }
if ( (humValue <= HumTrigger - HUM_LO ) && (humValue != -HUMIDITY_C)) {
digitalWrite(RELAY3, HIGH);
lcd.println("*");}
}
/***************************/
/*KEYPAD CODE***************/
adc_key_in = analogRead(0);
key = get_key(adc_key_in); //convert into key press. key = 1-5. -1 for none
if ( (key != -1))
{
/* digitalWrite(BACKLIGHT,HIGH); //Backlight code taken out
backlight = millis();*/
if (configure ==1)
{ lcd.clear(); }
delay(20); //debounce
key = get_key(adc_key_in);
delay(200);
/****Select key****/
if ( key == 3 ) //Toggle the configure Key
{
lcd.clear();
if( configure == 1)
{
configure = 0;
lcd.clear();
delay(100);
}
else if ( configure == 0 )
{
configure = 1;
lcd.clear();
delay(100);
}
key = -1;
}
}