2

I'm a beginner of Arduino programming, when I dumped the following code into Arduino NANO board, at the first the output is as expected. But After few trials the 16*2 LCD display is getting off and DC motor pump is running continuously.

      #include <Wire.h>
      #include <Adafruit_MLX90614.h>
      #include <LiquidCrystal_I2C.h>
      LiquidCrystal_I2C lcd(0x27, 16,2);
  char *typeName[]={&quot;Object&quot;,&quot;Ambient&quot;};

  Adafruit_MLX90614 mlx = Adafruit_MLX90614();

  const int trigPin = 13;
  const int echoPin = 12;
  #define DCwater_pump 11

  long duration;
  int distance;

 void setup() 
 {
      Serial.begin(9600);
      Serial.println(&quot;S.O.A.P. DISPENS&quot;);

      Serial.print(&quot;Ambient = &quot;);
      Serial.print(mlx.readAmbientTempF());
      Serial.print(&quot;*F\tObject = &quot;);
      Serial.print(mlx.readObjectTempF());
      Serial.print(&quot;*F&quot;);


      Serial.println();

      delay(500);


      if (!mlx.begin()) 
      {
          lcd.print(&quot;MLX90614 Failed&quot;);
          lcd.setCursor(0,1);
          lcd.print(&quot;check wiring!&quot;);      
          while (1)
          ;
      }  
      Wire.begin();
      lcd.begin(16,2);
      lcd.backlight();  
      lcd.print(&quot;S.O.A.P.D. Temp&quot;);
      lcd.setCursor(0,1);
      lcd.print(&quot;S.O.A.P.D. Temp&quot;);          
      delay(500);       
      clearCharacters(2-1,0, 16-1);

      pinMode(trigPin, OUTPUT); 
      pinMode(echoPin, INPUT); 
      pinMode(DCwater_pump, OUTPUT);

}           


void loop() {

    printTemp('C');
    delay(1000);

    printTemp('D');
    delay(1500);

}

float getTemp(char type) {

float value; float tempObjec = mlx.readObjectTempC(); float tempAmbient = mlx.readAmbientTempC();

if(type =='C') { value = tempObjec; } else if(type =='D') { value = tempAmbient; } return value;

}

        void printTemp(char type)

{ clearCharacters(1,0, 16-1 );
float TmpC =getTemp(type); float TemF; TemF = (TmpC*1.8)+32; lcd.setCursor(0,1); if(type =='C')

          {
            lcd.print(typeName[0]); 
            lcd.print(&quot; &quot;);
            lcd.print(TemF);        
            lcd.print((char)223);
            lcd.print(&quot;F&quot;);      
           }       

              else if(type =='D')
              {
                lcd.print(typeName[1]); 
                lcd.print(&quot; &quot;);
                lcd.print(TemF);        
                lcd.print((char)223);
                lcd.print(&quot;F&quot;);        
              }


}

void clearCharacters(uint8_t row,uint8_t start, uint8_t stop ) { for (int i=start; i<=stop; i++) { lcd.setCursor (i,row);
lcd.write(254); }

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);

distance= duration*0.034/2;

Serial.print(&quot;Distance: &quot;); 
Serial.println(distance);

       if (distance &lt; 30)
      {
       digitalWrite(DCwater_pump,HIGH);
       Serial.println(&quot;DC Pump is ON Now!!&quot;);
       delay(500);
      }
      else
      {
       digitalWrite(DCwater_pump,LOW);
       Serial.println(&quot;DC Pump is OFF Now!!&quot;);
       delay(500);
      }

}

PMF
  • 1,306
  • 5
  • 24
Swathi
  • 21
  • 1

0 Answers0