Fehlermeldung beim Überprüfen

Arduino: 1.6.6 (Windows 7), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\GR\Documents\Test_GR\Test_GR.ino: In function 'void loop()':

Test_GR:74: error: expected ')' before 'if'

  if (f4 == 1 && f3 == 0) {  (f3 = 1);  }

Hallo!
Als Anfänger bin ich fast am verzweifeln. Mein erstes Programm hat nach vielen Mühen zuerst funktioniert und ich konnte es auf die Hardware laden, aber am nächsten Tag kommt immer die Fehlermeldung:

 ^
----------
Test_GR:84: error: expected statement at end of input

  }

  ^

Test_GR:84: error: expected '}' at end of input

exit status 1
expected ')' before 'if'

ohne dass ich am Programm was geändert habe. Habe sowohl die neue Programmversion als auch WIN 7/32 und WIN10/32 versucht.
Wer kann mir helfen, den Fehler in dem Programm, siehe unten zu lösen?

//Steuerprogramm
int s = 0;   //Sekunde
int m = 0;   // Minute
int h = 1;   
int f1 = 0;   
int f2 = 0;  
int f3;
int f4;
int f5;
int bd = 1;

void setup() {
 Serial.begin(9600);
 pinMode(2, INPUT_PULLUP); 
 pinMode(3, INPUT_PULLUP); 
 pinMode(4, INPUT_PULLUP); 

 pinMode(10, OUTPUT); 
 pinMode(11, OUTPUT); //Sensorspannung
 pinMode(12, OUTPUT); 
 pinMode(13, OUTPUT); 
}

void loop() {
 // Blinken
 digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(500);              // wait for a second
 digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
 delay(500);              // wait for a second


 if (s == 60) {
   (m++);
   (s = 0);
 } else {
   s++;
 } if (m == 60) {
   (m = 0);
   (h++);
 } if   (h == 24) {
   (h = 0);
 }
  

 if (h == 1) {
   (f1 = 1); 
 } else {
   (f1 = 0);
 }
 if (f1 == 1) {
   Serial.print ("Stundenfenster aktiv");
   Serial.print("   ");
 }


 if (m < bd) {
   (f2 = 1);
   digitalWrite(11, HIGH);
   Serial.print("m Ein");
   Serial.print("  ");
 } else {
   (f2 = 0);
   digitalWrite(11, LOW);
 }
 

 // Digitaleingänge abfragen
 int DE2 = digitalRead(2); f3 = DE2; int DE3 = digitalRead(3); f4 = DE3; int DE4 = digitalRead(4); f5 = DE4;
 Serial.print(f1); Serial.print(f2); Serial.print(f3); Serial.print(f4); Serial.print(f5);
 // Störmeldung
 if (f4 = 1 //f5=1) {digitalWrite(10,HIGH);Serial.print("Störmeldung");Serial.println(" ");} else {digitalWrite(10, LOW);}

          
 if (f4 == 1 && f3 == 0) {  (f3 = 1);  }


 if (f1 == 1 && f2 == 1 && f3 == 1 && f5 == 0) {
 digitalWrite(12, HIGH);
   Serial.print(" Ein");
   Serial.println(" ");
 } else {
   digitalWrite(12, LOW);
   Serial.println(" Aus");
 }

So wie ich das sehe, fehlt am Ende der Loop eine schließende Klammer “}”.

Leider ist der Sketch schlecht lesbar.

Es ist besser, wenn du ihn in Code-Tags setzt. Schaltfläche “</>”.

in dieser Zeile:
// Störmeldung
if (f4 = 1 //f5=1) {digitalWrite(10,HIGH);Serial.print("Störmeldung");Serial.println(" ");} else {digitalWrite(10, LOW);}
hast du an der falschen Stelle einen Kommentar eingefügt, oder es sollte "||" heißen.
Außerdem wie schon erwähnt die "}" am Ende der Loop
Nachtrag:
bei if sollte es eher (f4 == 1 || f5 == 1) heißen, sonst wird f4 und f5 jeweils 1 zugewiesen.

Wenn es ein Kommentar sein soll muss man den Kommentar mit /* */ machen. Sonst wird die ganze Zeile auskommentiert.

Dann ist mir noch aufgefallen, du verwendest die IDE Version 1.6.6.
Die ist sehr Buggi, da können schnell Fehler auftreten, die man nicht so leicht zuordnen kann.
Verwende lieber die Version 1.6.7
Das hat jetzt aber aktuell nichts mit deinen Problemen zu tun.

Danke für die schnellen Rückmeldungen, aber noch habe ich es nicht kapiert warum die obere Abfrage (f4==1//f5==1) funktioniert und die untere(f4 == 1 && f3 == 0) nicht.
Zudem ist es komisch, dass es am Vortag funktioniert hat:

-----------
if (f4==1//f5==1) {digitalWrite(10,HIGH);Serial.print("Störmeldung");Serial.println(" ");} else {digitalWrite(10, LOW);}

         
if (f4 == 1 && f3 == 0) {  (f3 = 1);  }// nur wenn f4=1 und f3=0 sind soll f3 auf 1 gesetzt werden, sonst soll der Wert von f3 nicht geändert werden.


if (f1 == 1 && f2 == 1 && f3 == 1 && f5 == 0) {
digitalWrite(12, HIGH);
  Serial.print(" Ein");
  Serial.println(" ");
} else {
  digitalWrite(12, LOW);
  Serial.println(" Aus");
--

Test_GR.ino (1.72 KB)

Hallo!
Nachdem ich die // mit || ersetzt habe und bei einer Abfrage das = durch == ersetzt habe klappt es.
Nur wo finde ich auf der Tastatur das Zeichen | ?
Vielen Dank für Eure schnellen Rückmeldungen!!!

Warum verwendest du keine Code-Tags?

GR-Ill:
Nur wo finde ich auf der Tastatur das Zeichen | ?

Zwischen Shift und Y. Mit AltGr

|| ist ein boolsches Oder

Und beachten dass = eine Zuweisung und == ein Vergleich ist

Den Kommentar hättest du auch an der Farbe sehen können. Wobei man sagen muss dass das hell-grau in der Arduino IDE für Kommentare nicht schön unterscheidbar ist. Ein sattes dunkel-grün ist da schöner.

Serenifly:
Zwischen Shift und Y. Mit AltGr

|| ist ein boolsches Oder

Und beachten dass = eine Zuweisung und == ein Vergleich ist

Den Kommentar hättest du auch an der Farbe sehen können. Wobei man sagen muss dass das hell-grau in der Arduino IDE für Kommentare nicht schön unterscheidbar ist. Ein sattes dunkel-grün ist da schöner.

Danke!
Dieses Zeichen hatte ich noch nie benutzt.

Noch was. Diese einsilbigen Variablennamen sind nicht gut um den Sketch nach einem halben jahr noch zu verstehen. S für Sekunde und M für Minute. Warum schreibst du nicht gleich Sekunde oder Minute als Variablenname?

Grüße Uwe