Hallo Leute,
ich möchte in mein kleines Arduino Pro Mini-Si4703-Radio eine Batterieüberwachung integrieren.
Auf dieser Seite habe ich die Anregung gefunden und mein Test-Code sieht nun so aus:
Code:
float volt;
char akku[4];
long readVcc() {
long result;
// Read 1.1V reference against AVcc
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result; // Back-calculate AVcc in mV
return result;
}
void setup() {
Serial.begin(9600);
}
void loop()
{
volt = (readVcc()/1000);
dtostrf(volts, 2, 1, akku);
Serial.print( readVcc(), DEC );
Serial.print("\t");
Serial.println(volt,2);
delay(1000);
}
Dies ist das für mich unbefriedigende Ergebnis:

Der Wert für readVcc stimmt. Die Variable "volt" ist als float definiert. Warum bekomme ich dann bei der Division (readVcc/1000) keine Nachkommawerte angezeigt?
Ratlose Grüße,
Uwe
- - - Aktualisiert - - -
Uuups,
die Zeile: "dtostrf(volts, 2, 1, akku);" gehört da natürlich nicht rein, ändert aber nichts am Problem.
Sorry!
Lesezeichen