Codigo de Medición y/o lector de voltaje

Hola, me gustaria me ayudaran en mi codigo de voltimetro, por que al ingresarlo a mi proyecto, me sensa el valor casi exacto del valor real del voltimetro, pero al cargar el equipo, mi valor en el Arduino Keypad Shield LCD no pasa del valor maximo que 12.09v y el equipo llega a 14v max
les pongo mi codigo para que me ayuden, gracias.

#include <LiquidCrystal_I2C.h> // Debe descargar la Libreria que controla el I2C
LiquidCrystal_I2C lcd(0x3F,16,2);

int pin_lectura = A3;  
float voltaje_entrada;
float voltaje_final;
float resistencia1 = 100000; //Resistencia de 100K
float resistencia2 = 10000; //Resistencia de 10k


void setup() {

  pinMode(pin_lectura, INPUT);

}

void loop() {

  voltaje_entrada = (analogRead(A3) * 11.189) / 1024;  //Lee el voltaje de entrada
  voltaje_final = voltaje_entrada / (resistencia2 / (resistencia1 + resistencia2));  //Fórmula del divisor resistivo para el voltaje final

  lcd.setCursor(2, 0);
  lcd.print("Voltaje DC:");

  lcd.setCursor(5, 1);
  lcd.print(voltaje_final);  //Muestra el voltaje final
  delay(500);

}

Cambia la R1 x 120k y te permitira llegar a 14.3V manteniendo el máximo exacto de 1.100 Volts

Veo que no has configurado la referencia interna a 1.1V en el UNO.
Modific eso asi leerás bien

ya cambie la resistencia, gracias.

el único problema que tengo es lo del analogReference(INTERNAL);
ese solo lo ingreso dentro del void setup()
y seria lo unico ??

es que no eh utilizado esa configuración…

tambien vi un código de medidor de batería que no se si sirva es este para que me sense el voltaje de la bateria del instrumento

  #include <LiquidCrystal_I2C.h>
  #include <Wire.h>
  LiquidCrystal_I2C lcd(0x3F, 16, 2);
  byte pinV=A0; // Para leer el voltaje
  byte ledR=12; // LED rojo
  byte ledA=11; // LED amarillo
  byte ledV=10; // LED verde  

  float voltaje=0.0;
  int medida=0;
  int porcent=0;
  int pinOffset=A1;
  float offset=0.0;
  int valorPot = 0;

  unsigned long tAntes =0; // para el refresco de pantalla
  unsigned long tAhora =0;
  unsigned long tEjec =10000;

  void setup(){
       lcd.init();
       lcd.begin(16,2); // inicializamos el LCD.
       lcd.backlight(); // encendemos la retroiluminación.
       pinMode(ledR, OUTPUT);
       pinMode(ledA, OUTPUT);
       pinMode(ledV, OUTPUT);
       Serial.begin(9600);
       digitalWrite(ledR, LOW);
       digitalWrite(ledA, LOW);
       digitalWrite(ledV, HIGH);
     }

void loop() 
    { tAhora = millis();              // Comprobamos para refrescar el LCD
      if( tAhora - tAntes >= tEjec)
        {  // cada 10 segundos
           tAntes = tAhora; // actualizamos variables
           lcd.clear();     // Refrescamos
        }

    medida = analogRead(pinV); // Leemos voltaje de la batería
    valorPot = analogRead(pinOffset); //Leemos ajuste de offset
    int ajuste = map (valorPot, 0,1023,60,14); // Mapeamos a un rango más corto

offset = (ajuste/100.0);
lcd.setCursor(12,1);
lcd.print (offset);
voltaje= ((((medida*14.0)/1023.0))- offset); // Convertimos a valor con decimales
if (voltaje<=0)
   { // Si es menor o igual a cero
     voltaje=0.0;  // Le damos valor 0, para evitar negativos
   }

porcent=((voltaje*10)-40); // Fórmula para mostrar el porcentaje de carga
if(porcent<=0)
   { // Evitamos valores negativos
     porcent=0;
   }

// Condicionales para encender los LEDs
if(porcent>=80)
  {  digitalWrite(ledR, LOW);
     digitalWrite(ledA, LOW);
     digitalWrite(ledV, HIGH);
  }

if(porcent<79 && porcent>40)
  {  digitalWrite(ledR, LOW);
     digitalWrite(ledA, HIGH);
     digitalWrite(ledV, LOW);
  }

if(porcent<=39)
  {  digitalWrite(ledR, HIGH);
     digitalWrite(ledA, LOW);
     digitalWrite(ledV, LOW);
  }

lcd.setCursor(0,0);
lcd.print("Voltaje: ");
lcd.print(voltaje);
lcd.print("V");
lcd.setCursor(0,1);
lcd.print("Carga: ");
lcd.print(porcent);
lcd.print("%  IHS ");

//Descomentar para mostrar por monitor serial.
//Serial.print(medida); Serial.print("   ");
//Serial.print(voltaje);Serial.print("   ");
//Serial.print(porcent); Serial.println("%");

delay(1000);
}

Tranquilo no cambies a 50 códigos. Tu código esta bien.
El comando

 analogReference(INTERNAL);

va en el setup(), pero eso no hacia falta preguntarlo, lo buscas y la respuesta te la da el mismo PLayground.

Corrige tmb el factor nuevo que da el divisor resistivo.

muchas gracias Surbyte
creo que ya me quedo el proyecto.