se puede obtener el estado de carga de la bateria q esta alimentando al arduino?

En mi proyecto se requiere que el arduino sea alimentado por medio de una batería.
Básicamente lo que estoy usando por el momento es un arduino 1, un shield SIM800L y un sensor ultrasonico de distancia.
Los datos recabados del sensor se suben a una base de datos.
Mi preocupación es que necesito controlar remotamente el estado de la batería por lo que pienso enviar cada cierto tiempo desde el arduino hacia la base de datos el estado, pero no se si es posible, sin un shield adicional hacer esta medición.
Mi pregunta es en primer lugar si se puede? y si es que es posible me puedan guiar con el código para lograrlo?

Hola.

A la primera: Sí

A la segunda: Monta un divisor de tensión por cuatro conectado a la batería (si es de plomo) y que el arduino lea por una entrada analógica el resultado, Con eso mides cómodamente hasta 20 V. El resto, tú mismo.

Saludos

Prueba con este código y ya tu lo modificas.
Yo le estoy usando para una batería de 13.8 y máximo le puedo alimentar el arduino con 5 volt.
Como bien dice Newbie antes tienes que realizar el divisor de voltaje con un arreglo de resistencias.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float voltaje = 0;
int val = 0;
byte pila[] = { //FILA 0
 B01110,
 B10001,
 B10001,
 B10001,
 B10001,
 B10001,
 B10001,
 B11111
};
byte fila1[] = { //FILA 1
 B01110,
 B10001,
 B10001,
 B10001,
 B10001,
 B10001,
 B11111,
 B11111
};

byte fila2[] = {  //FILA 2
 B01110,
 B10001,
 B10001,
 B10001,
 B10001,
 B11111,
 B11111,
 B11111
};

byte fila3[8] = {  //FILA 3
 B01110,
 B10001,
 B10001,
 B10001,
 B11111,
 B11111,
 B11111,
 B11111
};
byte fila4[] = {  //FILA 4
 B01110,
 B10001,
 B11111,
 B11111,
 B11111,
 B11111,
 B11111,
 B11111
};
byte fila5[] = {  //FILA 5
 B01110,
 B11111,
 B11111,
 B11111,
 B11111,
 B11111,
 B11111,
 B11111
};


void setup() {
 lcd.createChar(0, pila);
 lcd.createChar(1, fila1);
 lcd.createChar(2, fila2);
 lcd.createChar(3, fila3);
 lcd.createChar(4, fila4);
 lcd.createChar(5, fila5);

 lcd.begin(16, 2);
 pinMode(A0, INPUT);
 lcd.print("IHS, S.A.DE C.V. ");
 
 
}
void lectura()
{
 voltaje = analogRead(A0);
 voltaje = ((voltaje * 13.8) / 1023.0);
 val = voltaje;
 delay(250);
}

void loop() {

 
 lectura();
 lcd.setCursor(0, 1);
 lcd.print("Voltaje: ");
 lcd.setCursor(8, 1);
 lcd.print(voltaje);

 switch (val)
 {
   case 1:
     lcd.setCursor(13, 1);
     lcd.write(byte(1));
     break;

   case 2:
     lcd.setCursor(13, 1);
     lcd.write(byte(2));
     break;

   case 3:
     lcd.setCursor(13, 1);
     lcd.write(byte(3));
     break;

   case 4:
     lcd.setCursor(13, 1);
     lcd.write(byte(4));
     break;

   case 5:
     lcd.setCursor(13, 1);
     lcd.write(byte(5));
     break;
   default:
     lcd.setCursor(13, 1);
     lcd.write(byte(0));
     break;

 }
}

Tal vez también te valga esto.

Saludos,