Hey guys i have made this program but im a little concerned because my values from my moisture sensor jump around quite a bit and if the sensor values are wrong for to long it may keep the heaters on for too long which can cause a fire i did use an if statment instead of while im just trying differnt ways here is my code... #include LiquidCrystal lcd(7,8,9,10,11,12); int sen = 5; int hOn = 6; int mot = 3; void setup() { Serial.begin(9600); lcd.begin(16,2); pinMode(hOn, OUTPUT); pinMode(sen, OUTPUT); pinMode(mot, OUTPUT); lcd.print("Start Up"); lcd.setCursor(0,1); lcd.print("Complete"); } void loop() { digitalWrite(hOn, HIGH); digitalWrite(mot, HIGH); digitalWrite(sen, HIGH); analogRead(4); delay(5000); digitalWrite(sen, LOW); int val = analogRead(4); int good = 451; int bad = 450; lcd.clear(); while(val <= bad) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Heaters On."); lcd.setCursor(0,1); lcd.print(val); lcd.setCursor(4,1); lcd.print("UpT:"); lcd.print(millis()/1000); digitalWrite(hOn, LOW); Serial.print (val); Serial.println (" Moisture Level Is Bad "); digitalWrite(mot, LOW); delay(120000); digitalWrite(mot, HIGH); delay(300000); digitalWrite(mot, LOW); delay(120000); digitalWrite(mot, HIGH); delay(60000); } while(val >= good) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Heaters Off."); lcd.setCursor(0,1); lcd.print(val); lcd.setCursor(4,1); lcd.print("UpT:"); lcd.print(millis()/1000); Serial.print (val); Serial.println (" All Is Good "); digitalWrite(hOn, HIGH); digitalWrite(mot, LOW); delay(120000); digitalWrite(mot, HIGH); delay(300000); digitalWrite(mot, LOW); delay(120000); digitalWrite(mot, HIGH); delay(60000); } }