Medidor de mperatura y presion para coche

Aunque lo de float no se muy bien lo que es, pero lo importanre es que funciona, dejo como a quedado el skech por si a alquien le interesa junto con los esquemas.

#include <Wire.h>
#include <LiquidCrystal_I2C.h> // libreria para que funcione el display 20X4
LiquidCrystal_I2C lcd (0x27, 16, 2);  // encuentran conectados RS, E, D4, D5, D6, D7
#include <OneWire.h>
OneWire  ds(10);

int ibut = 11 ;     // ibut PIN10 de entrada para el control del botón
int tiempo = 1000 ;    // Tiempo para dar tiempo a retirar el dedo del botón hasta hacer otra lectura
int estadoboton = 0 ;   // Variable para guardar el estado del boton LOW (bajo = 0) o HIGH (alto = 1)
int vista = 1 ;    // Primera vez controla lo que se hace únicamente en el primer bucle, luego se le cambia de valor


int SENSOR;   // variable almacena valor leido de entrada analogica A0
float PRESION;  // valor de presion en en decimales
float SUMA;   // valor de la suma de las 5 lecturas de presion

void setup(void) {                                // encender el LDC 16x2
    Serial.begin(9600);
    Wire.begin();
    lcd.begin (16,2) ;
    lcd.backlight();                    // terminar con luz de fondo encendida   
    lcd.clear();
    lcd.setCursor(8, 1);
    lcd.print("C");
    lcd.setCursor(9,1); 
    lcd.print((char)223);
    lcd.setCursor(0, 1);
    lcd.print("ACEITE");
    lcd.setCursor(10, 1);
    lcd.print(":");
    pinMode(ibut, INPUT);  // En el PIN 10 entra la medida del circuito del buton abrimos como lNPUT
    delayMicroseconds(50);

 }

void loop() {

  switch (vista) {
 
  case 1:
   SUMA = 0;         // valor inicial de SUMA en cero
  for (int i=0; i < 5; i++){      // bucle que repite 5 veces
  SENSOR = analogRead(A0);      // lectura de entrada analogica A0
  PRESION = map(SENSOR, 102, 921, 0, 20.7);                           // Funcion map () entre 0.5 a 4.5V con 0 a 20.7 psi (lectura de entrada analogica A0)
  SUMA = PRESION + SUMA;      // suma de cada lectura de presion
  delay(200);         // demora de medio seg. entre lecturas
  }
  lcd.setCursor(7, 0);        // cursor en primer fila y primer columna
  lcd.print("BAR:  ");        // escribe Pres:
  lcd.print(SUMA/5.0, 1);     // escribe valor promedio de 5 lecturas con un decimal
  lcd.setCursor(0, 0);        // cursor en primer fila y primer columna
  lcd.print("ACEITE");        // imprime psi

  if ( digitalRead(ibut) == HIGH ) {
            lcd.clear();
            vista = 1;
            delay(200);      
 
          }

  break;
    }

   byte i;
   byte present = 0;
   byte type_s;
   byte data[12];
   byte addr[8];
   float celsius, fahrenheit;
   if(!ds.search(addr)){
      ds.reset_search();
      delay(250);
      return;
   }
   if(OneWire::crc8(addr, 7) != addr[7]) {
      return;
   }
   switch(addr[0]){
   case 0x10:
      type_s = 1;
      break;
   case 0x28:
      type_s = 0;
      break;
   case 0x22:
      type_s = 0;
      break;
   default:
      return;
   } 
   ds.reset();
   ds.select(addr);
   ds.write(0x44, 1);
   delay(1000);
   present = ds.reset();
   ds.select(addr);    
   ds.write(0xBE);
   for( i = 0; i < 9; i++){
      data[i] = ds.read();
   }
   int16_t raw = (data[1] << 8) | data[0];
   if(type_s){
      raw = raw << 3;
      if(data[7] == 0x10) {
         raw = (raw & 0xFFF0) + 12 - data[6];
      }
   }else{
      byte cfg = (data[4] & 0x60);
      if (cfg == 0x00) raw = raw & ~7;
      else if (cfg == 0x20) raw = raw & ~3;
      else if (cfg == 0x40) raw = raw & ~1;
   }
   celsius = (float)raw / 16.0;
   Serial.println(celsius,1);
   lcd.setCursor(12, 1);
   lcd.print(celsius,1);
}