unsigned int readVcc2(void) {
// jremington:
// https://forum.arduino.cc/t/measuring-the-source-voltage-using-internal-1-1v-reference/576886/4
// Read 1.1V reference against AVcc
// set the reference to Vcc and the measurement to the internal 1.1V reference
ADMUX = (1<<REFS0) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1);
delay(2); // Wait for Vref to settle
ADCSRA |= (1<<ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring
unsigned int result = ADC;
//custom scale factor, processor specific
result = 1125300UL / (unsigned long)result; // Calculate Vcc (in mV); 1125300 = 1.1*1024*1000
return result; // Vcc in millivolts
}
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(readVcc2(), DEC);
delay(1000);
}