After several tries, i was successful with reading stable battery voltage using internal voltage reference of 1.1v, now the issue i face is that i cannot read stable sensor voltage, could you please let me know how can i read my sensor voltage? or do i need additional voltage divider (my sensor goes directly to A0 and GND pin).

 void setup(){
 Serial.begin(9600);
 }
 
 void loop() { 
 //REFS1 AND REFS0 to 1 1 -> internal 1.1V refference
 ADMUX |= B11000000; 
 //We read A1 (MUX0) for battery voltage
 ADMUX |= B00000001; 
 //We read A0 for sensor voltage
 ADMUX |= B00000000; // for my sensor 
 // Start AD conversion
 ADCSRA |= B11000000;
 // Detect end-of-conversion
 while (bit_is_set(ADCSRA,ADSC));
 float val = ADCL | (ADCH << 8);
 val = val * 5.7; // Using 4.7k and 1k voltage divider
 Serial.println(val);
 }



Something like the code below must workout but unfortunately it does not help!

 int sensorValue = analogRead(A0);
 voltage = ((sensorValue/ val) * 1023.); 
 delay(1000);
 Serial.println("voltage: ");
 Serial.print(voltage); 
 if (voltage<=215){
 digitalWrite (led, HIGH);
 }
 else if (voltage>=215){
 digitalWrite (led, LOW);
 }

I cannot find the issue, it should work, i believe.











//////////////////////new edit/////////////////////////////////////

 const long internalReference = 1078L; //measured AREF to be 1.078 ~ 1.078*1000= 1078V
 
 void setup() {
 // put your setup code here, to run once:
 Serial.begin (115200);
 }
 
 void loop() {
 analogReference (INTERNAL);
 ADCSRA |= (1<<ADSC);
 while (bit_is_set(ADCSRA,ADSC));
 float val = ADCL | (ADCH << 8);
 int sensorValue = analogRead (A0);
 val = (sensorValue/1078)*1024;
 Serial.println(val);
 delay(100);
 }