Skip Geldens
Skip Geldens

Reputation: 1

Serial communication on Arduino

I have an assignment for school where I need to turn on a led with the serial message #ON%, and turn the led off with #OFF%. The # and % are the identifiers for the correct string. So I made this code:

(bericht means message in Dutch)

String readString = "";
int recievedCharacter;
String bericht = "";

int ledPin = 6;


void setup() {
  Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
 pinMode(ledPin, OUTPUT);
}

void loop() 
{

  while (Serial.available() > 0)
  { 
    delay(4);    
    char readChar = (char) Serial.read(); // 'Convert' to needed type
    bericht += + readChar;         // concatenate char to message

  }

  if(bericht.startsWith("#"))
  {

    if(bericht == "#ON%")
   {
      Serial.println(bericht);
      Serial.println("goed"); 
      digitalWrite(ledPin, HIGH);
      //message = "";
    }



    if(bericht == "#OFF%")
    {
      Serial.println("goed"); 
      digitalWrite(ledPin, LOW);
      //message = "";
    }
  }
}

The problem is the program will never get into the if(bericht == "#ON%") section...

Sorry if this is a silly question but with a lot of googling I just can't figure it out...

Upvotes: 0

Views: 40

Answers (1)

Kenney
Kenney

Reputation: 9093

The problem is here:

bericht += + readChar;         // concatenate char to message // XXX '+ char' => int

this actually appends an integer to the message. Remove the +:

bericht += readChar;         // concatenate char to message // Goed!

Upvotes: 2

Related Questions