Please check the diagram 1st to understand the problem and the code:
While the switch is on
a) the System should be on and it should print out on monitor “ System is on” Problem : it keeps printing out system is on for infinite times.
b) When it calls the function teamreading(). Pin 13 should go on and it should send a signal to relay .if relay detects the signal it should turn on the heating element and led as shown in figure. Problem: the reading from temperature decreases without using any heating element.
c) if we put delay on each output such as Serial.print(tempC) Problem: while the loop() keeps running for infinite times and user try to turn off the switch it does not detects it.
I have written following code:
// These constants won't change:
const int sensorPin = 2; // pin that the sensor is attached to
const int ledPin = 9; // pin that the LED is attached to
const int indicatorLedPin = 13; // pin that the built-in LED is attached to
const int buttonPin = 2; // pin that the button is attached to
boolean calabrated = false; // have we calabrated the sensor
//boolean calibration = false; //
boolean onMsgSent = false;
boolean offMsgSent = false;
float tempC =0;
float tempF=0;
int tempSen=0;
void setup() {
// set the LED pins as outputs and the switch pin as input:
pinMode(indicatorLedPin, OUTPUT);
pinMode (ledPin, OUTPUT);
pinMode (buttonPin, INPUT);
Serial.begin(9600);
}
void loop() {
if(!calabrated){
// while the button is pressed, take calibration readings:
while (digitalRead(buttonPin) == HIGH) {
Serial.println("System ON!!!!");
if(digitalRead(buttonPin)==HIGH) onMsgSent =false;
//if(digitalRead(buttonPin) == HIGH) calibration = false;
tempreading();
}
calabrated= true;
// signal the end of the calibration period
digitalWrite(indicatorLedPin, LOW);
Serial.println("System OFFFFF!!!!");
}
if(digitalRead(buttonPin) == HIGH) calabrated = false;
// do other suff here
}
void tempreading() {
// turn on the indicator LED to indicate that Heating process is happening:
digitalWrite(indicatorLedPin, HIGH);
Serial.println("System is on.. This part is operating!!!!");
if(digitalRead(buttonPin)==HIGH) onMsgSent =false;
//Serial.println("System is on this part is operating!!!!");
int reading =analogRead(sensorPin);
Serial.print(reading);Serial.println(" Current Reading");
delay(1000);
if(reading < 920)
{
digitalWrite(indicatorLedPin, HIGH);
float voltage = reading*5000.0;
voltage = (voltage)/1024.0;
tempC = (voltage -500)/100;
Serial.print(tempC); Serial.println(" degress C");
delay(1000);
}
else
{
digitalWrite(indicatorLedPin, LOW);
Serial.print("Temperature is more then 40*C");
}
}
