Problema cod Arduino

Sunt incepator in programare, de fapt am luat un kit Arduino cu care am inceput sa studiez limbajul codurilor. Am preluat de pe internet un cod pentru controlul unei pompe de circulatie a unui panou solar pentru apa calda. Am cateva probleme cu el:

  1. La unul din senzorii de temperatura DS18B20, dupa simularea unei incalziri, la declansarea releului pompei, apar pe lcd 4 zecimale si afisarea cateodata a unei temperaturi cu minus, cum veti vedea in pozele din atach. In ‘‘serial print’’ apar doar temperaturile cu minus nu si cele 2 zecimale in plus. Am anulat alimentarea releului din placa Arduino dar situatia zecimalelor nu s-a modificat. Codul este:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

//These first three variables are where the adjustments are made.

//set maximum tank temperature in C
int tankmax = 65;

//set how much higher collector temperature should be, in C, before turning on pump
int diff = 8;

//Turn off pump whan temp is within this many degrees of the collector
float werethere = 1.5;



//set up pins for lcd display
LiquidCrystal lcd (5, 6, 7, 8, 9, 10);

// Set input pin for onewire bus
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

//The thermometers are identified by their unique identifier

byte tanktopThermometer[8] = {0x28, 0x4F, 0xB2, 0x46, 0x92, 0x10, 0x02, 0x5D};

byte collectorThermometer[8] = {0x28, 0xAE, 0xEB, 0x46, 0x92, 0x11, 0x02, 0xE1};
static bool pumpOff=false;

//set pin for pump relay
int pump = 3;

//set pin for led pump indicator
int pumpLed = 4; 

int pumpstate;



void setup ()
{
  //start serial port
  Serial.begin(9600);
  Serial.println ("Solar hot water Differential Controller");
  
  // Start up the onewire library
  sensors.begin();

// locate devices on the bus
  Serial.print("Locating devices...");
  Serial.print("Found ");
  Serial.print(sensors.getDeviceCount(), DEC);
  Serial.println(" devices.");

 

  // set the sensor resolution from 9 to 12 bit
  sensors.setResolution(tanktopThermometer, 9);
  sensors.setResolution(collectorThermometer, 9);
  
  //initialize lcd 
  lcd.begin(16,2);
  lcd.setCursor (0,0);
  lcd.print ("CL");
  lcd.setCursor (0,1);
  lcd.print ("TT");
  
  
  //set pins to output
  pinMode (pump, OUTPUT);
  pinMode (pumpLed, OUTPUT);
 digitalWrite (pump,HIGH);
 
 
  
  
}

//____________________________________________________________________________________________________________

//functions that reads temp from sensors and returns as floating point value.  

float sensorValue (byte deviceAddress[])
{
float tempC = sensors.getTempC (deviceAddress);
return tempC;

}


//________________________________________________________________________________________________________________

void loop ()
{
  
  //get all sensor values
  sensors.requestTemperatures();
  
  //set variables
  float tank = (sensorValue(tanktopThermometer));
  float collector = (sensorValue(collectorThermometer));
  
  
  //prints temperature values to serial port and lcd 
  Serial.print ("tank ");
  Serial.println (tank);
  Serial.print ("collector ");
  Serial.println (collector);
  lcd.setCursor (2,0);
  lcd.print (collector);
  lcd.setCursor (2,1);
  lcd.print (tank);
  Serial.print ("pump state ");
  Serial.println (pumpstate);
  Serial.println ("");
  
  
   /*turns on pump when collector is (diff) degrees above tank.
  and tank is below (tankmax) temperature.
  once pump turns on, pumpstate variable turns to "1" and causes pump to remain
  on as long as collector temp is higher than tank temp.
  If max tank temp is reached, pump always turns off.*/
  
  


if (pumpstate);
  {
  if (((collector - werethere) < tank ) || (tank >= tankmax) )
    {
    digitalWrite (pump, HIGH);
    digitalWrite (pumpLed, LOW);
    lcd.setCursor (11,0);
    lcd.print ("");
    
    }
  }

  {
  if (((collector - diff) > tank ) && ( tank < tankmax ) )       
    {
    digitalWrite (pump, LOW);
    digitalWrite (pumpLed, HIGH);
    lcd.setCursor (11,0);
    lcd.print ("P=On");
    
   
    }
  }


  
    
      
  delay(1000);
  
  
}
  1. As dori sa stiu cum se sterge de pe lcd P=On atunci cand pompa este oprita, sau cum pot sa afisez pe lcd P=Off atunci cand pompa este oprita, fara sa se suprapuna afisajele P=On cu P=Off. Uploading: 20200415_153423.jpg…

S-au rezolvat problemele. Trebuia putina documentare…