2016-12-22 9 views
-3

Я пытаюсь получить светодиод, который загорается, когда какое-то сообщение появляется на последовательном порту, но ничего не работает! , пожалуйста, помогите мне !!arduino serial HELP ME

int awsState = "AWS:0"; // for incoming serial data 

void setup() { 
    Serial.begin(9600); 
    pinMode(13, OUTPUT); 
} 

void loop() { 

    // send data only when you receive data: 
    if (Serial.available() > 0) { 
      // read the incoming byte: 
      awsState = Serial.read(); 

      // say what you got: 
      Serial.print(incomingByte); 
      Serial.println("Good"); 
      if (awsState == "AWS:1"){ 

       digitalWrite(13, HIGH); 
      } 
    else if (awsState == "AWS:0"){ 
     digitalWrite(13, LOW); 
    } 
    } 

} 
+1

Где определяется 'incomingByte'? Посмотрите на [«Arduino - SoftwareSerial: read»] (https://www.arduino.cc/en/Reference/SoftwareSerialRead) ... Эта функция возвращает только один символ за раз, а не полное сообщение. –

+0

Прежде чем отправлять его, всегда делайте ** Инструменты> Автоформат ** в своем коде. – per1234

ответ

-1

Вот способ, чтобы прочитать команду из Serial ссылки.

Шаг 1 - объявить строку для хранения входных данных в качестве глобальной переменной

String awsState; 

Вместо того, чтобы:

int awsState = "AWS:0"; 

Шаг 2 - инициализировать строку в setup()

void setup() { 
    Serial.begin(9600); 
    pinMode(13, OUTPUT); 
    awsState= ""; 
} 

Шаг 3 - извлечь все полученные характер, отображать их и обработать команду

void loop() { 
    while (Serial.available() > 0) { 
     // read all received characters 
     char rec = Serial.read(); 
     // until <return> character 
     if (rec != '\n') { 
      awsState += rec; 
     } 
     else { 
      Serial.print(awsState); 
      Serial.println("Good"); 
      if (awsState == "AWS:1"){ 
       digitalWrite(13, HIGH); 
      } 
      else if (awsState == "AWS:0"){ 
       digitalWrite(13, LOW); 
      } 
      // reset the command to wait the next one 
      awsState= ""; 
     } 
    } 
} 
+0

Любая причина для downvote? В предлагаемом ответе объясняется, где были обнаружены ошибки, и легко понять решение. –

+0

Я все еще немного смущен, его не работает ?? –

+0

@ DanielHolmes, вы попробовали? Я попытался имитировать, потому что у меня нет моего Ардуино со мной. –