Benötige Hilfe bei der Fehlermeldung "Compilation error: expected primary-expression before ')' token"

Hey,
ich bin ganz neu hier und mache meine ersten Versuche mit den Arduino.
Ich bekomme immer die Fehlermeldung: Compilation error: expected primary-expression before ')' token und kann damit nix anfangen.
Kann mir da einer helfen?

Vor deiner ) fehlt etwas. Ein ; vielleicht?

Einmal STRG-T in der IDE drücken hilft meist - dann werden die Einrückungen passend eingestellt und wenn Dir beim Ergebnis was komisch vorkommt, hast Du an der Stelle meist den Fehler sitzen.

Ansonsten hilft nur:
Sketch und Fehlermeldungen in Code-Tags <CODE> posten!

Ich habe mal den Sketch und die Fehlermeldung Kopiert.
Vielleicht könnt ihr damit was anfangen.

tippe C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:3:19: error: expected primary-expression before ')' token
 DHT22 dht(2, DHT22);  //DigitalPin 2 und der Typ DHT22
                   ^
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino: In function 'void Display_Ausgang()':
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:19:14: error: 'temp' was not declared in this scope
   oled.print(temp);            //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
              ^~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:19:14: note: suggested alternative: 'exp'
   oled.print(temp);            //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
              ^~~~
              exp
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:20:8: error: 'class U8GLIB_SH1106_128X64' has no member named 'set'; did you mean 'setRGB'?
   oled.set.PrintPos(105, 15);  //Position des Cusor auf X=105, Y=15 Pixel
        ^~~
        setRGB
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:28:14: error: 'Lfeuchte' was not declared in this scope
   oled.print(Lfeuchte);         //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
              ^~~~~~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:29:8: error: 'class U8GLIB_SH1106_128X64' has no member named 'set'; did you mean 'setRGB'?
   oled.set.PrintPos(90, 40);    //Position des Cusor auf X=90, Y=40 Pixel
        ^~~
        setRGB
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:36:14: error: 'regen' was not declared in this scope
   oled.print(regen);         //Schreibt dur die Variable regen ("ja"/"nein")
              ^~~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:36:14: note: suggested alternative: 'rewind'
   oled.print(regen);         //Schreibt dur die Variable regen ("ja"/"nein")
              ^~~~~
              rewind
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino: In function 'void setup()':
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:40:7: error: 'class DHT22' has no member named 'begin'
   dht.begin();  // put your setup code here, to run once:
       ^~~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:41:11: error: 'PIN_regen' was not declared in this scope
   pinMode(PIN_regen, INPUT);
           ^~~~~~~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino: In function 'void loop()':
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:45:19: error: 'PIN_regen' was not declared in this scope
   if (digitalRead(PIN_regen)) {
                   ^~~~~~~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:46:5: error: 'regen' was not declared in this scope
     regen = "ja";
     ^~~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:46:5: note: suggested alternative: 'rewind'
     regen = "ja";
     ^~~~~
     rewind
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:50:5: error: 'regen' was not declared in this scope
     regen = "nein";
     ^~~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:50:5: note: suggested alternative: 'rewind'
     regen = "nein";
     ^~~~~
     rewind
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:54:3: error: 'temp' was not declared in this scope
   temp = dht.readTemperatur();  // put your main code here, to run repeatedly:
   ^~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:54:3: note: suggested alternative: 'exp'
   temp = dht.readTemperatur();  // put your main code here, to run repeatedly:
   ^~~~
   exp
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:54:14: error: 'class DHT22' has no member named 'readTemperatur'; did you mean 'getTemperature'?
   temp = dht.readTemperatur();  // put your main code here, to run repeatedly:
              ^~~~~~~~~~~~~~
              getTemperature
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:55:3: error: 'Lfeuchte' was not declared in this scope
   Lfeuchte = dht.readHumidity();
   ^~~~~~~~
C:\Users\User\Desktop\sketch_oct31a\sketch_oct31a.ino:55:18: error: 'class DHT22' has no member named 'readHumidity'; did you mean 'getHumidity'?
   Lfeuchte = dht.readHumidity();
                  ^~~~~~~~~~~~
                  getHumidity

exit status 1

Compilation error: expected primary-expression before ')' tokenoder füge den Code hier ein

Zeige mall dein Sketch, so wie welsche DHT lib du nutzt
Hast was falsch zusammen kopiert.

Das wäre der Sketch.

#include <DHT22.h>  //Bibliothek des DHT22

DHT22 dht(2, DHT22);  //DigitalPin 2 und der Typ DHT22


#include <U8glib.h>                           //Bibliothek für das Display
U8GLIB_SH1106_128X64 oled(U8G_I2C_OPT_NONE);  //Display hat den Namen "oled" bekommen




void Display_Ausgang() {
  oled.setFont(u8g_font_helvB08);  //Schriftgröße8, Helvetica bold

  //Ausgabe der Temperatur in Zeile 1
  oled.setPrintPos(0, 15);     //Position des Cusor auf X=0, Y=15 Pixel
  oled.print("Temperatur: ");  //schreibt bei der oben genanten Position "Temperatur:"
  oled.setPrintPos(75, 15);    //Position des Cusor auf X=75, Y=15 Pixel
  oled.print(temp);            //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
  oled.set.PrintPos(105, 15);  //Position des Cusor auf X=105, Y=15 Pixel
  oled.write(0xb0);            //Code für GRAD-Zeichen
  oled.print("C");             //schreibt bei der oben genanten Position "C"

  //Ausgabe der Luftfeuchte in Zeile 2
  oled.setPrintPos(0, 40);      //Position des Cusor auf X=0, Y=40 Pixel
  oled.print("Luftfeuchte: ");  //schreibt bei der oben genanten Position "Luftfeuchte:"
  oled.setPrintPos(75, 40);     //Position des Cusor auf X=75, Y=40 Pixel
  oled.print(Lfeuchte);         //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
  oled.set.PrintPos(90, 40);    //Position des Cusor auf X=90, Y=40 Pixel
  oled.print("%");              //schreibt bei der oben genanten Position "%"

  //Ausgabe Regen_Status in Zeile 3
  oled.setPrintPos(0, 62);   //Position des Cusor auf X=0, Y=62 Pixel
  oled.print("Regen: ");     //schreibt bei der oben genanten Position "Regen:"
  oled.setPrintPos(75, 62);  //Position des Cusor auf X=75, Y=62 Pixel
  oled.print(regen);         //Schreibt dur die Variable regen ("ja"/"nein")
}
void setup() {

  dht.begin();  // put your setup code here, to run once:
  pinMode(PIN_regen, INPUT);
}

void loop() {
  if (digitalRead(PIN_regen)) {
    regen = "ja";
  }

  else {
    regen = "nein";
  }


  temp = dht.readTemperatur();  // put your main code here, to run repeatedly:
  Lfeuchte = dht.readHumidity();

  oled.firstPage();

  do {
    Display_Ausgang();
  } while (oled.nextPage());  //solange die nähste Seite "wahr" ist

  delay(60000);  //Eine Minute Zeitverzögerung
}

#define DHTTYPE DHT22

fehlt

#include <DHT22.h>  //Bibliothek des DHT22
#define DHTTYPE DHT22
DHT22 dht(2, DHT22);  //DigitalPin 2 und der Typ DHT22

Aber das ist nicht alles .

Danke erstmal für deine schnelle Antwort.
Was meinst du mit, aber das ist nicht alles?
Ich habe das alles aus dem Buch "Arduino ohne Vorkenntnisse" geschrieben und deswegen wundert mich auch die Fehlermeldung.

Na ja, was soll ich schreiben?
hast falsch abgeschrieben

Nächster Fehler

 oled.setPrintPos(75, 40);     //Position des Cusor auf X=75, Y=40 Pixel
  oled.print(Lfeuchte);         //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
  oled.set.PrintPos(90, 40);

Bei oled.set.PrintPos(90, 40); der zweiter Punkt ist falsch, weg damit.
Vergleiche mall genau den Text mit dem Buch

Wo ist PIN_Regen definiert? Wo ist regen definiert?

Ich finde da im Deinem Scetch nichts. Der Compiler offenbar auch nicht.
Bei temp und Lfeuchte dasselbe.

tue das vor hinter
void Display_Ausgang() {

float Lfeuchte = dht.readHumidity();
 float temp = dht.readTemperature();

Teste das, dem Regensensor habe den Pin 3 zugeteilt, notfalls ändern.

#include <DHT22.h>  //Bibliothek des DHT22

DHT22 dht22(2);  //DigitalPin 2 und der Typ DHT22


#include <U8glib.h>                           //Bibliothek für das Display
U8GLIB_SH1106_128X64 oled(U8G_I2C_OPT_NONE);  //Display hat den Namen "oled" bekommen


byte REGEN_PIN = 3;
char regen[5];
void Display_Ausgang() {
  oled.setFont(u8g_font_helvB08);  //Schriftgröße8, Helvetica bold
  float temp = dht22.getTemperature();;  // put your main code here, to run repeatedly:
  float Lfeuchte = dht22.getHumidity();
  //Ausgabe der Temperatur in Zeile 1
  oled.setPrintPos(0, 15);     //Position des Cusor auf X=0, Y=15 Pixel
  oled.print("Temperatur: ");  //schreibt bei der oben genanten Position "Temperatur:"
  oled.setPrintPos(75, 15);    //Position des Cusor auf X=75, Y=15 Pixel
  oled.print(temp);            //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
  oled.setPrintPos(105, 15);  //Position des Cusor auf X=105, Y=15 Pixel
  oled.write(0xb0);            //Code für GRAD-Zeichen
  oled.print("C");             //schreibt bei der oben genanten Position "C"

  //Ausgabe der Luftfeuchte in Zeile 2
  oled.setPrintPos(0, 40);      //Position des Cusor auf X=0, Y=40 Pixel
  oled.print("Luftfeuchte: ");  //schreibt bei der oben genanten Position "Luftfeuchte:"
  oled.setPrintPos(75, 40);     //Position des Cusor auf X=75, Y=40 Pixel
  oled.print(Lfeuchte);         //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
  oled.setPrintPos(90, 40);    //Position des Cusor auf X=90, Y=40 Pixel
  oled.print("%");              //schreibt bei der oben genanten Position "%"

  //Ausgabe Regen_Status in Zeile 3
  oled.setPrintPos(0, 62);   //Position des Cusor auf X=0, Y=62 Pixel
  oled.print("Regen: ");     //schreibt bei der oben genanten Position "Regen:"
  oled.setPrintPos(75, 62);  //Position des Cusor auf X=75, Y=62 Pixel
  oled.print(regen);         //Schreibt dur die Variable regen ("ja"/"nein")
}
void setup() {


  pinMode(REGEN_PIN, INPUT);
}

void loop() {
  void Display_Ausgang();
  if (digitalRead(REGEN_PIN)) {
    snprintf(regen, 3, "ja");
  }  else {
    snprintf(regen, 5, "nein");
  }

  oled.firstPage();

  do {
    Display_Ausgang();
  } while (oled.nextPage());  //solange die nähste Seite "wahr" ist

  delay(60000);  //Eine Minute Zeitverzögerung
}

Kompiliert fehlerfrei

Der Sketch verwendet 9438 Bytes (29%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 305 Bytes (14%) des dynamischen Speichers, 1743 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Das meinst Du sicher nicht so ganz ernst oder?

Du darfst Code nicht einfach wild zusammenkopieren....
Die Anweisungen müssen schon zur verwendeten Library passen.
Und Variablen(-Bezeichner) müssen vor ihrer ersten Verwendung mit einem passenden Datentypen definiert werden.

Hast Recht ist mir gar nicht aufgefallen.

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