Tastendruck Ausgabe spinnt?!

Guten Tag liebe Community!

Ich stehe gerade vor einem seltsamen Problem.

Der Fall:
Mein Versuch ist es gerade, einen "Modus" mit einem Tastendruck einzuschalten und mit einem weiteren wieder auszuschalten.
Als groben Test soll mir der Arduino beim Tastendruck den gedrückten zustand ausgeben.

Einmal der Code:

int Zustand = 2;
bool Zustand_ein = false;
bool Switch = false;

long MillisEP = 0;
long MillisBlinker = 0;

void setup()
{
  pinMode(2, INPUT);
  pinMode(4, INPUT);
  pinMode(8, INPUT);
  Serial.begin(9600);
}

void loop()
{

  // Status

  if (digitalRead(Zustand) == 1 && millis() - MillisEP >= 500)
  {
    Zustand_ein = !Zustand_ein;
    Switch = true;
    MillisEP = millis();
[u][i][b]    Serial.println("");  // Ohne diesen Zustand gibt er mir in der Testaufgabe nichts aus![/b][/i][/u]
  }

  // Testausgabe
  if (digitalRead(Zustand_ein) == 0 && digitalRead(Switch) == 0)
  {
    Serial.println("Zustand ein");
    Switch = false;
  }
  if (digitalRead(Zustand_ein) == 1 && digitalRead(Switch) == 0)
  {
    Serial.println("Zustand aus");
    Switch = false;
  }
  // Testausgabe
}

Das seltsame an der Sache ist jetzt:
Setze ich nicht diese Zeile mit ein :

    Serial.println("");  // Ohne diesen Zustand gibt er mir in der Testaufgabe nichts aus!

Gibt er mir keine Werte über den seriellen Monitor aus. Setze ich es wieder ein, dann sagt mehr mir beim Tastendruck welcher "Modus" eingeschaltet ist!

Kann mir jemand verraten, woran das liegt?

Danke und lieben Gruß
Christian

Hi

Was versprichst Du Dir von digitalRead(Switch)?
Switch ist bool und kann somit nur true/false/1/0/HIGH/LOW annehmen (ist Alles 0 oder 1).
Somit fragst Du die Pinzustände der seriellen Schnittstelle ab - wofür?

Die Serial.print-Zeile sollte Nichts mit Deinem Problem zu tun haben, weiß aber noch nicht, was sich durch das Fehlen ändern sollte.

MfG

Du musst dir erstmal klarmachen, was digitalRead bedeutet.
digitalRead ist ausschließlich dazu da, von input-Pins zu lesen und als Parameter für die Funktion macht deshalb auch nur eine Pinnummer Sinn.
Deine Abfragen:

if (digitalRead(Zustand_ein) == 0 && digitalRead(Switch) == 0)
...
if (digitalRead(Zustand_ein) == 1 && digitalRead(Switch) == 0)

machen deshalb keinen Sinn, und nicht das was Du vermutlich bezwecken willst. Denn Zustand_ein und Switch sind keine Pinnummern.

Noch ein paar Feinheiten:

long MillisEP = 0;
long MillisBlinker = 0;

Das sollten unsiged long Variablen sein.

Hast Du Pullup/Pulldownwiderstände an den Tastenpoins?

Grüße Uwe