Projekt mit ESP32 Funktionen in verbindung mit Switch Case

Und wie soll da eine 1400 rein passen?

habs geändert und die Fehlermeldung ist weg

C:\Users\Acer\Desktop\fertig_Diplomarbeit\fertig_Diplomarbeit.ino: In function 'String NameEinlesen()':
fertig_Diplomarbeit:269:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^
C:\Users\Acer\Desktop\fertig_Diplomarbeit\fertig_Diplomarbeit.ino: In function 'float gewichtMessen()':
fertig_Diplomarbeit:312:1: error: control reaches end of non-void function [-Werror=return-type]
 }

jetzt sinds noch die zwei Fehler

das return war an der falschen stelle

Dann jetzt schaun:

Zeile 269
Ahh...

Davon abgesehen, das die ( und ) keinen Sinn machen...
Da ist das return in der falschen Ebene
drück mal STRG-T in der IDE.
Und stell mal (Wenn Du die Fehler dann nicht findest!) den Code erneut in Deinem Post #12 ein
Bitte.

hab den Code in Post #12 geändert

1 Like

Wenn Du etwas zurück geben willst, musst Du in der Funktion dafür sorgen, das dies IMMER passiert.

in float gewichtMessen()
gibst Du nur einen wert zurück, wenn

  if (newDataReady)
  {
    if (millis() > (t + serialPrintInterval))
    {

erfüllt ist:

      t = millis();
      return (i_left / 1000) + (i_right / 1000);
    }
  }
}

Das ist falsch.
Eigentlich(!) ungetestet wäre es richtig:

    }
  }
  return (i_left / 1000) + (i_right / 1000);
}

Allerdings ist Dein Konstrukt nicht dafür ausgelegt, denn Du prüfst:

  if (LoadCell_right.update()) newDataReady = true;
  LoadCell_left.update();
  // get smoothed value from the dataset:
  if (newDataReady)
  {
    if (millis() > (t + serialPrintInterval))
    {

Das wird also insgesamt nichts.
Das muss auseinander gefummelt werden.

ok das werd ich wsl nicht hinbekommen. Da ist es wsl einfacher keine Funktion daraus zu machen. könnte was jz als funktion steht ja direkt in den Case schreiben. ist dan halt nich wirklich übersichtlich

Was hindert Dich?
Der Einstieg:

float gewichtMessen()
{
  float rueckgabewert = 0.0;

Und der der Ausstieg:

      newDataReady = 0;
      t = millis();
      rueckgabewert = (i_left / 1000) + (i_right / 1000);
    }
  }
  return rueckgabewert;
}

Und: Das muss noch aufgearbeitet werden...

ich werd mich morgen hinsetzten und werds versuchen

OK!
Dann darfst Du das wie angegeben als erstes probieren und wenn Dir was auffällt, darfst Du den float rueckgabewert entweder global definieren oder mit einem static versehen.

Und dann wüsste ich gerne, was Du da raus bekommst.

Na denne.

danke werds versuchen und gib sag morgen bescheid wie es gelaufen ist

Bitte.
So'n Diplom will erarbeitet werden :slight_smile:
Beste Grüße
Man liest sich.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.