Serial.read geht nicht

Hi , ich bin nun am verweifeln. Ich möchte eine Zahl ( 1-8) über serial senden. Leider geht es nicht so recht. Die Vari state1 zeigt immer -1, ist aber unsigned int deklariert. Ich möchte auch nicht immer Enter drücken müssen, es soll bei drücken der "6" die LED an bzw. wieder aus schalten. :frowning:

if (Serial.available() > 0);
		{
			state1 = Serial.read();
			
		}
		if (state1 == '6')
		{
			digitalWrite(LED, HIGH);
		}
		if (state1 == '7')
		{
			digitalWrite(LED, LOW);
		}

MfG Marco

PS: Sorry ich hatte einen kleinen Tipfehler! also 6 enter-> LED an, 7->aus
wie bekomme ich nun hin OHNE Enter drücken?

Warum nutzt du nicht direkt Serial.parseInt()?

Was du genau vor hast verstehe ich aber nicht ganz. Das du Enter drücken musst ist im Serial Monitor vollkommen normal. Bevor das ENTER nicht kommt, kannst du reinschreiben, was du möchtest. Erst mit dem Enter wird es geschickt.

Was du jedoch meist, wird Carriage Return und New Line sein.

beginner34:

if (Serial.available() > 0);
	{
		state1 = Serial.read();
		
	}
	if (state1 == '6')
	{
		digitalWrite(LED, HIGH);
	}
	if (state1 == '7')
	{
		digitalWrite(LED, LOW);
	}



MfG Marco

PS: Sorry ich hatte einen kleinen Tipfehler! also 6 enter-> LED an, 7->aus
wie bekomme ich nun hin OHNE Enter drücken?

Ohne Enter zu drücken bekommst Du das mit einem "Terminalprogramm" hin statt mit dem "Seriellen Terminal" von Arduino.

Und mit Enter bekommst Du das mit dem Seriellen Terminal von Arduino hin, wenn Du es vernünftig programmierst. Das hier ist völliger Unsinn:

if (Serial.available() > 0);

Das Semikolon am Ende bedeutet nämlich: Wenn diese Bedingung erfüllt ist, mache gar nichts.

Danach folgt in jedem Fall das Serial.read():

		{
			state1 = Serial.read();
			
		}

Und dieses liefert immer -1, wenn KEIN Zeichen im seriellen Eingangspuffer bereitsteht.

Versuche mal das:

if (Serial.available() > 0)
{
  state1 = Serial.read();
  if (state1 == '6')  digitalWrite(LED, HIGH);
  else if (state1 == '7') digitalWrite(LED, LOW);
}

Und schaue Dir mal in Sachen C++ Syntax an, was eine Anweisung ist, was ein Codeblock und wie eine if-Anweisung aussehen kann!