Problem "Void was not declared in this scope" behandeln

Hallo Leute,

ich hab aktuell das problem dass das IDE während dem kompelieren den fehler"exit status 1
'Boden' was not declared in this scope" ausgibt und das obwohl ich an der stelle vom code nichts geändert hab.
In den letzten paar monate hat der sketch ohne problem funktioniert, nur jetzt nach dem ich einen sd-kartenleser intigriert habe und versuche den "delay without delay" zu intigreiren, erkennt er aufeinmal den Void Boden nicht mehr. Bis jetzt hat in so einem fall immer das neustarten des IDE geholfen nur jetzt nicht. Die Void ansich ist in einer extra datei, die ebenfasll Boden heist und die bis jetzt auch ohne problem erkannt wird,Was kann ich machen, damit das Programm wieder kompeliert wird?

#include <SPI.h>        //SD-Karten-leser einbinden
#include <SD.h>

File Datei;



#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);



long laenge;
long cm;
int rainPin1 = A0;
int rainPin2 = A1;
int rainPin3 = A2;
int rainPin4 = A3;
int rainPin5 = A4;
int rainPin6 = A5;
int rainPin7 = A6;
int rainPin8 = A7;
int rainPin9 = A8;
int rainPin10 = A9;
int LEDrot = 3;
int LEDgruen = 5;
int LEDblau = 6;
int Button = 2;
int buttonState = 0;
int Low1 = 750;
int Low2 = 700;
int sensor1 = 0;
int sensor2 = 0;
int sensor3 = 0;
int sensor4 = 0;
int sensor5 = 0;
int sensor6 = 0;
int sensor7 = 0;
int sensor8 = 0;
int sensor9 = 0;
int sensor10 = 0;

unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
unsigned long interval = 6000;    // Interval zwischen zwei Änderungen
unsigned long previousMillis2 = 0; // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
unsigned long interval2 = 6000;    // Interval zwischen zwei Änderungen

void setup() {


  pinMode(rainPin1, INPUT);
  pinMode(rainPin2, INPUT);
  pinMode(LEDblau, OUTPUT);
  pinMode(LEDgruen, OUTPUT);
  pinMode(LEDrot, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, INPUT);
  pinMode(Button, INPUT);

  analogWrite(LEDrot, 0);
  Serial.begin(9600);
  //lcd.clear();
  lcd.begin();

  if (!SD.begin(10))                  //SD-Kareten check
  {
    Serial.println("Verbindung zur SD Karte fehlgeschlagen");
    return;
  }


  Datei = SD.open("Feuchte.txt", FILE_WRITE);
  Datei.println("Dieser Text wird in die Datei geschrieben");
  Datei.close();

  Datei = SD.open("Feuchte.txt", FILE_READ);
  while (Datei.available()) {
    Serial.write(Datei.read());
  }
  Serial.println(" ");
  Datei.close();                      //SD-Kareten check
}


void loop()
{

  digitalWrite(8, LOW);                         //entfernungsmesser
  delayMicroseconds(2);
  digitalWrite(8, HIGH);
  delayMicroseconds(5);
  digitalWrite(8, LOW);

  laenge = pulseIn(9, HIGH);

  cm = (laenge * 34) / 2000;

  Serial.print(cm);
  Serial.println("cm");
  Serial.println(" ");
  Datei = SD.open("Feuchte.txt", FILE_WRITE);

  if (cm <= 30) {
    Datei.print(cm);
    Datei.println("cm");
    Datei.println(" ");
    Datei.close();
  }


  Boden();

  buttonState = digitalRead(Button);


    if (buttonState == HIGH || cm < 30) {       //wenn der enfernungsmesser und button an sind
      //Boden();
      delay(1);
      LCD();


      lcd.backlight();
    }
  
  delay(5000);
}

else {                      //wenn der entfernungsmesser und button aus sind
  lcd.noBacklight();
  analogWrite(LEDblau, 0);
  analogWrite(LEDrot, 0);
  analogWrite(LEDgruen, 0);
}
}

Vielleicht, weil kein
void Boden() { ... }
im Code vorkommt?

DerMilko:

}

}

Wenn nach drücken von Strg-T zwei Klammern übereinander stehen, ist irgendeine zuviel.

Gruß Fips

DerMilko:
... obwohl ich an der stelle vom code nichts geändert hab. ...

Das kenne ich. Als ich vor rund 10 Jahren mit C(++) anfing, habe ich mir mal schier eine Hornhaut auf die Brille geglotzt, um am Ende darauf aufmerksam gemacht zu werden, dass sich die Ursache der Fehlermeldung an einer vollkommen anderen Stelle als der angemeckerten befand. Wie Fips schon schreibt, ist etwas faul, wenn nach dem Autoformatieren zwei Klammern übereinander stehen.
Grundsätzlich ist es vorteilhaft, seinen Code durch passende Formatierung (Einrückungen, Zusammenfassen von Codeteilen) so lesbar zu gestalten, dass man auch als Code-Neuling schnell erkennt, wie er arbeitet. Das ist mit Arbeit verbunden, ja. Aber Du sparst bei der Fehlersuche das Zehnfache an Zeit und Nerven. Und als Neuling kann man jede Hilfe gebrauchen.

Gruß

Gregor

DerMilko:
....obwohl ich an der stelle vom code nichts geändert hab.

Dann würde er den Fehler nicht auswerfen.

Etwas hast du geändert, sieh dir den Sketch genau an.

gregorss:
....dass sich die Ursache der Fehlermeldung an einer vollkommen anderen Stelle als der angemeckerten befand.

Da ich mit Tab's in der IDE arbeite, ist mir die Fehlermeldung bekannt.

Wenn irgendwo, in irgendeinen Tab eine Klammer falsch ist, kommt als Fehlermeldung immer das eine Funktion nicht declariert ist.

Gruß Fips

Derfips:
Da ich mit Tab's in der IDE arbeite, ist mir die Fehlermeldung bekannt.

Es gibt viele Möglichkeiten, sich die Arbeit zu erleichtern. Blöd ist halt, wenn sich ein Fehler in Tab A erst in Tab B auswirkt und dort angemeckert wird.
Als ich mit C++ anfing, habe ich halt noch reinen C++-Code geschrieben - in Emacs für den G++, d.h. da war noch nichts mit Tabs. Als ich dann irgendwann darauf aufmerksam gemacht wurde, dass sich die Ursache für den Fehler auf Seite 8 schon auf Seite 1 befindet, hatte ich immerhin wieder einen guten Grund zum Fluchen :slight_smile:

Gruß

Gregor

HotSystems:
Etwas hast du geändert, sieh dir den Sketch genau an.

klar nur nicht andieser stelle, fehler ist genfunden, war totaler anfänger fehler, ich hatte eine klammer( } ) zu viel ':smiley:

Derfips:
Wenn nach drücken von Strg-T zwei Klammern übereinander stehen, ist irgendeine zuviel.

Gruß Fips

Danke, damit hab ich den fehler gefunden :smiley:

zu erklärung hab ich mit dem programiern nicht angefengen um programiern zu lernen, sonderen weil wir in der berufsschule in einem lehrjahr ein projekt mit einem arduino auto hatten, was wir selber designen mussten. Das hat mir spass gemacht und ich wollte ihn verbessern, das hab ich auch schon, nur um zu lernen, mach ich neben her noch ander projekte.

Hi

DAS ist aber genau der Grund, den ich hören will, warum Du mit Arduino arbeitest.
Leider kommt hier all zu oft, daß die Leute was mit Arduino machen MÜSSEN ... und in der Schule noch NIE was dazu gesagt wurde ... blöde Lehrer halt ...

Wenn Du Das aus Interesse machst, bleibt auch was hängen!
Und keine Angst: Auch saublöde Fehler werden Dir in Zukunft nicht erspart bleiben :wink:

MfG