read string from serial monitor

//read string from serial monitor
if(Serial.available()>0) // if we get a valid byte, read analog ins:
{
comdata = "";
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
Serial.println(comdata);
}

iemand een idee waarom bovenstaande niet werkt ?
Arduino software 1.8.3

code van les 9 sunfounder superkit 2

gaat verder met :

if(comdata == "red")
{
digitalWrite(redPin, HIGH);//turn the red led on
digitalWrite(greenPin, LOW);//turn the green led off
digitalWrite(yellowPin, LOW);//turn the yellow led off
}
else if(comdata == "yellow")
{
digitalWrite(redPin, LOW);//turn the red led off
digitalWrite(greenPin, LOW);//turn the green led off
digitalWrite(yellowPin, HIGH);//turn the yellow led on
}
else if(comdata == "green")
{
digitalWrite(redPin, LOW);//turn the red led off
digitalWrite(greenPin, HIGH);//turn the green led on
digitalWrite(yellowPin, LOW);//turn the yellow led off
}
else
{
digitalWrite(redPin, LOW);//turn the red led off
digitalWrite(greenPin, LOW);//turn the green led off
digitalWrite(yellowPin, LOW);//turn the yellow led off
}

maar ik kan ingeven wat ik wil er gaat geen led branden. Wel
als ik een regel toevoeg
comdata = "yellow"; (of "red" , "green")

Zet die hele sketch ff hier neer. Mogelijk zit de oorzaak elders

Code
//Serial Monitor
// open the serial monitor ,if you input red, you will see the red LED light up
//Email:support@sunfounder.com
//Website:www.sunfounder.com
//2015.5.7
const int greenPin= 2; //the green led pin attach to pin 2
const int yellowPin= 3; //the yellow led pin attach to pin 3
const int redPin= 4; //the red led pin attach to pin 4
String comdata = "";
int lastLength = 0;
void setup()
{
pinMode(greenPin,OUTPUT); //initialize the greenPin as output
pinMode(yellowPin, OUTPUT); //initialize the yellowPin as output
pinMode(redPin, OUTPUT); //initialize the redPin as output
Serial.begin(9600); // start serial port at 9600 bps:
Serial.print("Please input any color of LED:"); //print message on serial monitor
}
void loop()
{
//read string from serial monitor
if(Serial.available()>0) // if we get a valid byte, read analog ins:
{
comdata = "";
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
Serial.println(comdata);
}
if(comdata == "red")
{
digitalWrite(redPin, HIGH);//turn the red led on
digitalWrite(greenPin, LOW);//turn the green led off
digitalWrite(yellowPin, LOW);//turn the yellow led off
}
else if(comdata == "yellow")
{
digitalWrite(redPin, LOW);//turn the red led off
digitalWrite(greenPin, LOW);//turn the green led off
digitalWrite(yellowPin, HIGH);//turn the yellow led on
}
else if(comdata == "green")
{
digitalWrite(redPin, LOW);//turn the red led off
digitalWrite(greenPin, HIGH);//turn the green led on
digitalWrite(yellowPin, LOW);//turn the yellow led off
}
else
{
digitalWrite(redPin, LOW);//turn the red led off
digitalWrite(greenPin, LOW);//turn the green led off
digitalWrite(yellowPin, LOW);//turn the yellow led off
}
}

Heb je de baudrate op de terminal ook op 9600?

Net ff getest (alleen ff met ander pinnummers voor de LEDs. werkt als een tierelier

//Serial Monitor
// open the serial monitor ,if you input red, you will see the red LED light up
//Email:support@sunfounder.com
//Website:www.sunfounder.com
//2015.5.7
const int greenPin 	= 9; 		//the green led pin attach to pin 2
const int yellowPin     = 10;	 	//the yellow led pin attach to pin 3
const int redPin 	= 11; 		//the red led pin attach to pin 4
String comdata 	        = "";
int lastLength 		= 0;

void setup() {
	pinMode(greenPin, OUTPUT); 	//initialize the greenPin as output
	pinMode(yellowPin, OUTPUT);     //initialize the yellowPin as output
	pinMode(redPin, OUTPUT); 	//initialize the redPin as output
	Serial.begin(9600); 		// start serial port at 9600 bps:
	Serial.print("Please input any color of LED:"); //print message on serial monitor
}

void loop() {
	//read string from serial monitor
	if (Serial.available() > 0) // if we get a valid byte, read analog ins:
	{
		comdata = "";
		while (Serial.available() > 0) {
			comdata += char(Serial.read());
			delay(2);
		}
		Serial.println(comdata);
	}
	if (comdata == "red") {
		digitalWrite(redPin	, HIGH); 	//turn the red led on
		digitalWrite(greenPin	, LOW); 	//turn the green led off
		digitalWrite(yellowPin	, LOW); 	//turn the yellow led off
	} else if (comdata == "yellow") {
		digitalWrite(redPin	, LOW); 	//turn the red led off
		digitalWrite(greenPin	, LOW); 	//turn the green led off
		digitalWrite(yellowPin	, HIGH); 	//turn the yellow led on
	} else if (comdata == "green") {
		digitalWrite(redPin	, LOW); 	//turn the red led off
		digitalWrite(greenPin	, HIGH); 	//turn the green led on
		digitalWrite(yellowPin	, LOW); 	//turn the yellow led off
	} else {
		digitalWrite(redPin	, LOW); 	//turn the red led off
		digitalWrite(greenPin	, LOW); 	//turn the green led off
		digitalWrite(yellowPin	, LOW); 	//turn the yellow led off
	}
}

hmm , vreemd. werk je ook met software versie 1.8.3 ?
had eerst 1.6.10. misschien ligt het daaraan ?

Ik kan ingeven wat ik wil maar de ledjes blijven uit.

hoe zet je de terminal op 9600 baud ?

hbarkhof:
hoe zet je de terminal op 9600 baud ?

Type in de void setup() {

Serial.begin(9600);

Serial.begin staat toch gewoon in mijn code !

Ga het morgen proberen met 1.6.10.

Je monitor zelf staat die wel op9600? Ergens rechts onderin in de ide

Zie je wel de boodschap dat je een kleur moet invoeren? Want dan werkt de monitor gewoon. Dan zit het vrijwel zeker in de instelling of je een cr en lf doorgeeft op het moment dat de kleur hebt ingetoetst. En dan staat er in jouw variabele bijv "red" en dat is iets anders dan "red"

In de monitor komt netjes de regel

Please input any color of LED:

Geef dan bovenin red in plus enter en dan staat er

Please input any color of LED: red

Maar verder gebeurt er niets. Als ik tevoren de code aanpas met

Comdata = "red";

Dan gaat netjes de rode led aan.

Op het monitor scherm ik dacht rechts onderin staat nu crlf of cr of lf. Er is ook een keuze none. Die moet je hebben

dat was het Nico ! moest op "Geen regeleinde" staan. Dank je wel.

Henk.

snap je ook wat dat betekent?

Ik denk het wel. Als je een andere keuze maakt zet de monitor een en / of achter
de jouw ingegeven tekst. Right ?

Je kan ook in de sketch filteren dat je alle 0x0D en alle 0x0A tekens negeert danmaakt het niet meer uit

Bedankt Nico. Ik moet nog veel leren maar dat maakt het ook leuk.

Henk.