Anfänger braucht Hilfe bei if - else Funtion

Hallo,

ich bin Anfänger in der Arduinoprogrammierung und wollte mir eine Steuerung meiner MoBa-Platte fertigen.
Mein Plan ist, mit einem Taster eine Weiche entweder gerade oder auf abbiegen geschaltet wird. Dazu habe ich mir aus einem Youtube_Video die Zeilen für den Sketch rausgezogen und für mich angepasst.

Leider bekomme ich die Fehlermeldung

"sketch.ino:252:1: error: 'else' without a previous 'if'
else
^~~~
sketch.ino:280:1: error: 'else' without a previous 'if'
else
^~~~
Error during build: exit status 1"

Das heißt ja, dass ER kein if für die else-Funktion fnden kann???
Ich habe schon sämtliche geschweifte Klammern nachgesehen und es sollte meiner Meinung nach passen. Aber das tut es nicht. Was ist das da?
Leider kann ich auch nicht kontrollieren, ob meine Schaltung der Weiche funktioniert.
Ich bin leicht verzweifelt!

// Weiche Gleis 1-2

Taster1_2Status = digitalRead(Taster1_2);

if (Taster1_2Status != letzterStatus1_2);
  {
  if (Taster1_2Status == 1);
    {
    Taster1_2Zaehler ++;
    }
  
  }

  else{
 
  digitalWrite(LED_Weiche1g, LOW);
  digitalWrite(LED_Weiche1k, HIGH);
  digitalWrite(LED_Weiche2g, LOW);
  digitalWrite(LED_Weiche2k, HIGH);
  Weiche1.attach(8);
  Weiche1.write (110);
  delay(500);
  Weiche1.detach();
  }


if (Taster1_2Zaehler % 2 == 0);
  {
  digitalWrite(LED_Weiche1g, HIGH);
  digitalWrite(LED_Weiche1k, LOW);
  digitalWrite(LED_Weiche2g, HIGH);
  digitalWrite(LED_Weiche2k, LOW);
  Weiche1.attach(8);
  Weiche1.write (70);
  delay(500);
  Weiche1.detach();

  Taster1_2Zaehler = 0;
  }

  else{
 
  digitalWrite(LED_Weiche1g, LOW);
  digitalWrite(LED_Weiche1k, HIGH);
  digitalWrite(LED_Weiche2g, LOW);
  digitalWrite(LED_Weiche2k, HIGH);
  Weiche1.attach(8);
  Weiche1.write (110);
  delay(500);
  Weiche1.detach();

  }
letzterStatus1_2 = Taster1_2Status;
delay(10);


Das ist der Teil, der nicht funktioniert
Falls das noch von Interesse ist, ich habe diese Schaltung mit WOKWI.com erstellt.

Vielen Dank für eure Hilfe

Lösche das Semikolon hinter der Bedingung an drei Stellen.

drück mal STRG-T - das stellt u.a. die Einrückungen richtig.
Dann siehst das schon viel besser

schlecht, wir brauchen normalerweise immer einen vollständigen Sketch.

dann hättest ja dein Projekt auf Wokwi verlinken können ... dann hätten wir auch den ganzen Sketch gesehen

Deine Meinung...

Tipp:
Der Compiler hat (fast) immer recht.
So auch hier.

Ist das ; wirklich da richtig platziert?

OHH das ging ja schnell. Vielen Dank.
Habe die Semikolons entfernt und es geht.
Perfekt, Danke.

Da ich am Anfang stehe, so einen Arduino zu programmieren, sind so kleine Sachen für mich nicht ersichtlich.
Eigentlich ist mein Problem immer andersherum, ich vergesse die Semikolons öfters.
Und die Klein- und Großschreibung ist auch nicht so einfach.

Aber ich versuche es weiter.

Vielen Dank nochmal

Du machst da jedes mal attach / detach
Das bedeutet du erzeugst das Servo-Steuersignal immer nur ganz kurz und schaltest es dann gleich wieder ab.

Ein Modellbauservo ist aber ein Regelkreis
Das Soll-Signal ist das Steuersignal, dass über die Signalleitung in das Servo hineingeleitet wird. Wenn du dem Servo durch das detach das Signal abschaltest dann hat die Regelelektronik KEINE Ahnung mehr was die Sollposition ist.
Das Servo bleibt dann nur aufgrund der Reibungskräfte in etwa an der Stelle wo es gerade ist. Evtl. zuckt es noch woanders hin.

Und beim Attach zuckt es dann möglicherweise auch erst kurz bevor es wieder in Sollposition ist.

Das attach ruft man gaaanz am Anfang des Programm in der function setup() auf und detach() braucht man eigentlich gar nicht.

du schaltest da immer zwei IO-pins. Hängt da en jedem IO-pin eine LED?

Ein Semikolon schließt eine Funktion / Steuerstrukturen ab.
Darum ist das IF nach dem Semikolon vorbei.
Darum sind die Programmteile in den geschwungenen Klammern nur "zusammengefaßte" Programmteile die immer ausgeführt werden. Du darfst Teile mit geschwungenen Klammern zusammenfassen.

Grüße Uwe