Spannung auslesen und vergleichen mittels IF abfrage

Hallo Zusammen :slight_smile:

Ich habe folgendes Problem:

Für mein Projekt muss ich feststellen, wann die benutzte Batterie, sich dem Ende zu neigt.

Mit nachfolgendem Code wird die Spannung aus dem Arduino Nano Board ausgelesen:

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;
}

Nun möchte ich den readVcc Wert mit 3800, per IF Abfrage vergleichen so, dass die Spannung nur dann angezeigt wird falls diese kleiner oder gleich 3800mV beträgt.

Das habe ich so gelöst:

(void Loop)

if (readVcc <= 3800){
    display.setTextSize(1);
    display.setCursor(20,25);
    display.print("Low Voltage!!");
    display.setCursor(102,25);
    display.println(readVcc (), DEC);
    Serial.print("Low Voltage!!");
    Serial.println(readVcc(), DEC);     
  }

Nun habe ich aber das Problem, dass der vergleich mit dem readVcc anscheinend nicht funktioniert.

Wenn ich anstelle des readVcc eine Zahl eintrage, funktioniert alles tadellos.

Wüsste jemand an was das liegen könnte, und was ich abändern muss, dass das funktioniert wie ich es gerne hätte?

Besten Dank bereits im voraus für die Bemühungen.

Cerberus94:
...

Nun möchte ich den readVcc Wert mit 3800, per IF Abfrage vergleichen so, dass die Spannung nur dann angezeigt wird falls diese kleiner oder gleich 3800mV beträgt.

if (readVcc >= 3800){

?

Should perhaps be

if (readVcc <= 3800){

Sorry, habe schon so viel rumprobiert, dass sich da ein Fehler eingeschlichen hat.

Habe es bereits auf beide Wege probiert. Leider ohne Erfolg.

Sorry,

 if (readVcc() <= 3800L){

Super, habe schon fast vermutet, dass es am Ende an so was kleinem liegt.

Nun funktionierts.

Ich danke dir vielmal. :slight_smile: