Серийное общение на Arduino

У меня есть задание для школы, где мне нужно включить светодиод с последовательным сообщением #ON% и выключить светодиод с #OFF%. # И% являются идентификаторами для правильной строки. Итак, я сделал этот код:

(bericht означает сообщение на голландском языке)

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 = "";
    }
  }
}

Проблема в том, что программа никогда не попадет в раздел if(bericht == "#ON%")...

Извините, если это глупый вопрос, но с большим количеством прибегая к помощи я просто не могу понять это...

1 ответ

Проблема здесь:

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

это фактически добавляет к сообщению целое число. Удалить +:

bericht += readChar;         // concatenate char to message // Goed!
Другие вопросы по тегам