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:

Klicke auf die Grafik für eine größere Ansicht

Name:	com.JPG
Hits:	11
Größe:	30,9 KB
ID:	33170
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!