Monday, 8 June 2015

Arduino soldering iron temperature monitor and alarm



 int led13 = 13; //LED  
 int led12 = 9; // alarm  
 int led11 = 8; //vibration motor  
 const int sensorPin = A0;  
 const float baselineTemp = 20.0;  
 int counter;  
 #include <NewPing.h>  
 #include <LiquidCrystal.h>  
 #define TRIGGER_PIN 7 //ultrasound sensor pins  
 #define ECHO_PIN   6  
 #define MAX_DISTANCE 200   
 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);  
 int DistanceCm;  
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  
 void setup()    
 {  
  pinMode(led13, OUTPUT);  
  pinMode(led12, OUTPUT);  
  pinMode(led11, OUTPUT);  
  lcd.begin(16, 2);  
 }  
 void loop()  
 {   
  delay(30);  
  DistanceCm = sonar.ping_cm();  
  int sensorVal = analogRead(sensorPin);  
  float voltage = sensorVal* 5.0;  
  voltage/=1024.0;  
  float temperature = (voltage - 0.5) * 100;  
  if((DistanceCm>=20)&&(DistanceCm<=100))  
  { if(temperature<=27)  
   {       
        counter=0;  
        digitalWrite(led13, HIGH);  
        lcd.print("Temperature ");  
        lcd.print(temperature);  
        lcd.setCursor(0,1);  
        lcd.print("Distance ");  
        lcd.print(DistanceCm);  
        lcd.setCursor(13,1);  
        lcd.print("C ");  
        lcd.print(counter);  
        delay(1000);  
        lcd.clear();     
        }  
        else  
        {  
          alarm();  
          lcd.print("Temperature ");  
          lcd.print(temperature);  
          lcd.setCursor(0,1);  
          lcd.print("Distance ");  
          lcd.print(DistanceCm);  
          lcd.setCursor(13,1);  
          lcd.print("C ");  
          lcd.print(counter);  
          delay(1000);  
          lcd.clear();  
        }  
  }  
      else if((DistanceCm<20)||(DistanceCm>100))  
       {   if((DistanceCm>2)&&(DistanceCm<10))  
          {  
            counter=0;  
            digitalWrite(led13, HIGH);  
            lcd.print("Temperature ");  
            lcd.print(temperature);  
            lcd.setCursor(0,1);  
            lcd.print("Distance ");  
            lcd.print(DistanceCm);  
            lcd.setCursor(13,1);  
            lcd.print("C ");  
            lcd.print(counter);  
            delay(1000);  
            lcd.clear();  
            delay(300000);  
          }    
          else  
          {  
                if(temperature>27)  
                {   
                 alarm();  
                 lcd.print("Temperature ");  
                 lcd.print(temperature);  
                 lcd.setCursor(0,1);  
                 lcd.print("Distance ");  
                 lcd.print(DistanceCm);  
                 lcd.setCursor(13,1);  
                 lcd.print("C ");  
                 lcd.print(counter);  
                 delay(1000);  
                 lcd.clear();  
                }  
                else  
               {  
                 counter=0;  
                 digitalWrite(led13, HIGH);// turn the LED on (HIGH is the voltage level)  
                 lcd.print("Temperature ");  
                 lcd.print(temperature);  
                 lcd.setCursor(0,1);  
                 lcd.print("Distance ");  
                 lcd.print(DistanceCm);  
                 lcd.setCursor(13,1);  
                 lcd.print("C ");  
                 lcd.print(counter);  
                 delay(1000);  
                 lcd.clear();     
                }     
          }    
        }  
 }  
 void alarm()  
 {  
    counter=counter+1;  
    digitalWrite(led13, LOW);  
    delay(1000);  
    if(counter==4)  
    {  
      digitalWrite(led12, HIGH);// turn the LED on (HIGH is the voltage level)  
      digitalWrite(led11, HIGH);// turn the LED on (HIGH is the voltage level)  
      //delay(10);  
      counter=1;  
    }  
    else  
    {  
     digitalWrite(led12, LOW);// turn the LED on (HIGH is the voltage level)  
      digitalWrite(led11, LOW);// turn the LED on (HIGH is the voltage level)  
    }  
 }  

No comments:

Post a Comment