Probleme mit IF Abfrage

Warum funktioniert diese IF Abfrage nicht?
Es soll ein Zeichen von der Tastatur gelesen werden, es wird so lange gewartet bist entweder w oder x gedrückt wird.
Danach wird per IF entschieden was passieren soll.
Aber egal ob ich w oder x eingebe es wird immer die erste if abfrage mit x ausgeführt.

  while (c != 'w' && c != 'W' && c != 'x') {  // Warte auf Taste w
    c = keyboard.read();
  }
  if (c = 'x') {
    digitalWrite(mPin, HIGH); 
    delay(1200);
    digitalWrite(mPin, LOW); 
    dooropen=1;
  }

    lcd.clear();
    lcd.setCursor(0,0); // LCD Cursor auf Anfang von Zeile 0
    lcd.print("Test 2");

was mache ich falsch?

Weil if (c = 'x') immer wahr ist.

c = 'x'

ist eine Zuweisung. Vergleichen tut man mit

if (c == 'x')

Wie doof von mir :roll_eyes: Habe bisher nur Delphi programmiert, daher kenne ich C noch nicht so... Danke!

Mach Dir nicht zuviel Sorgen, das ist ein Typischer Fehler in C den wir alle schon mehrmals gemacht haben. :wink: :wink:
Grüße Uwe

Und genau aus dem Grund ist es sinnvoll die Abfrage umzudrehen.

if (c = 'x')
ist zwar von Der Programmlogik her falsch, für den Compiler stimmt es aber.

Schreibst Du hingegen
if ('x' = c)
würde der Compiler sofort meckern, weil diese Zuweisung ungültig ist. Und dann merkst Du sofort, dass Du ein = vergessen hast.