Anfänger Frage Arduino Funktion

Hallo zusammen
bin Anfänger mit Elektronik und Arduino, folgendes Problem habe ich gerade.
Möchte mit dem Sensor ACS712 Strom messen.
Den Sketch habe ich aus dem Internet, funktioniert so auch.

void setup() {
 
  Serial.begin(9600);
}
 
void loop() {
 
  float average = 0;
  for(int i = 0; i < 1000; i++) {
    average = average + (.0264 * analogRead(A3) -13.51) / 1000;
    delay(1);
  }
  Serial.println(average);  
}

Jetzt wollte ich die Berechnung in eine Funktion auslagern, habe es so gemacht.

void setup() {
 
Serial.begin(9600);
}

void loop() {
 
float a;

a = amp();
Serial.println(a);
}


float amp() {
  float average = 0;
  for(int i = 0; i < 1000; i++) {
    average = average + (.0264 * analogRead(A3) -13.51) / 1000;
    //Serial.println(average);
    delay(1);
    return(average);
  }
}

kommt aber nur 0.00

Danke im Voraus für die Hilfe

Gruß Ralf

Hi ich bin auch Anfänger und arbeite gerade erst ein buch durch um alles zu lernen aber müssen die 2 // vor dem serial.print nicht weg sonst ist der print ja ausgeklammert

Hallo,
Weiter oben in der Loop steht das serial.println nochmals, dort möchte ich den übergeben Wert der Funktion ausgeben lassen.

Gruß Ralf

Zuerst, Code bitte in die Code-Tags setzen, geht auch nachträglich via editieren.

Er schreibt nirgends, dass er das per Serial ausgeben will, daher darf das auch kommentiert sein.
Dein return(average); ist zu früh, schieb das mal eine klammer weiter nach unten.

Hallo,
danke für den Hinweis mit dem Code.
Das ändern von der Zeile hat gepasst, danke nochmals jetzt kann ich an meinem Projekt weiter machen.

Gruß Ralf

Wenn Du "Serial.println(average);" auskomentiert (// gelöscht) hättest, dann hättest Du gesehen daß es nur einmal ausdruckt und nicht 1000 mal.
Grüße Uwe

Nur noch mal für mich da ich auch anfänger bin. Dadurch das der return mit in der falschen schleife wahr hat sich der selber immer wieder auf null zurück gesetzt.

hi,

ein return bewirkt nicht nur, daß der rückgabewert der funktion gesetzt wird, sondern auch, daß die funktion sofort verlassen wird.

gruß stefan

Um die Frage ergänzend zu Eisebaer genauer zu beantworten: Nein, sie wird nicht deswegen auf 0 gesetzt. Der Wert war an der Stelle nur zufällig 0.