Pages: [1]   Go Down
Author Topic: Project Help  (Read 254 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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");
  }
 
}
« Last Edit: October 11, 2011, 03:28:45 am by chayanba » Logged

Seattle, WA USA
Offline Offline
Brattain Member
*****
Karma: 548
Posts: 46042
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This is your third thread on the same topic. Are you going to listen here?
Logged

Pages: [1]   Go Up
Jump to: