Hi Carlrowan,
Greetings!
Please note that earlier we used battery API but it is giving fixed 3.00V reading. So we have moved to manual ADC.
Also I am attaching sample code and output log for your reference.
Output log:
ADC pin [19] value = 464, reference = 3.30, max = 1024.00
Voltage1 value = 2.492188 V
Please guide.
Regards,
Dinesh
//Set pin number
uint8_t analogPin = WB_A0;
void setup()
{
// initialize serial communication at 115200 bits per second
Serial.begin(115200);
Serial.println("RAKwireless Arduino Analog Example");
Serial.println("------------------------------------------------------");
analogReadResolution(10);
// udrv_adc_set_resolution(UDRV_ADC_RESOLUTION_10BIT);
// analogReference(AR_INTERNAL_3_0);
udrv_adc_set_mode(UDRV_ADC_MODE_3_3);
}
void loop()
{
float max, ref;
switch (udrv_adc_get_resolution()) {
case UDRV_ADC_RESOLUTION_6BIT:
{
max = 64.0;
break;
}
case UDRV_ADC_RESOLUTION_8BIT:
{
max = 256.0;
break;
}
case UDRV_ADC_RESOLUTION_10BIT:
default:
{
max = 1024.0;
break;
}
case UDRV_ADC_RESOLUTION_12BIT:
{
max = 4096.0;
break;
}
case UDRV_ADC_RESOLUTION_14BIT:
{
max = 16384.0;
break;
}
}
switch (udrv_adc_get_mode()) {
case UDRV_ADC_MODE_DEFAULT:
default:
{
ref = 3.6;
break;
}
case UDRV_ADC_MODE_3_3:
{
ref = 3.3;
break;
}
case UDRV_ADC_MODE_3_0:
{
ref = 3.0;
break;
}
case UDRV_ADC_MODE_2_4:
{
ref = 2.4;
break;
}
case UDRV_ADC_MODE_1_8:
{
ref = 1.8;
break;
}
case UDRV_ADC_MODE_1_2:
{
ref = 1.2;
break;
}
}
int adc_value = analogRead(analogPin);
Serial.printf("ADC pin [%d] value = %d, reference = %.2f, max = %.2f\r\n", analogPin, adc_value, ref, max);
// This is the formula to get the input voltage of RAK5811:
Serial.printf("Voltage1 value = %f V\r\n", ref*(((float)adc_value)/max)*(5.0f)/(3.0f));
Serial.println();
delay(5000);
}