2016-12-22 54 views
-3

我試圖讓一個LED亮起來,當某個消息通過串口傳過來,但沒有任何工作! 請幫助我!arduino串口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

?看看[「Arduino - SoftwareSerial:read」](https://www.arduino.cc/en/Reference/SoftwareSerialRead)...該函數一次只返回一個字符,而不是完整的消息。 –

+0

在發佈之前,請務必在您的代碼上執行** Tools> Auto Format **。 – per1234

回答

-1

這裏是讀取來自Serial鏈接命令的方式。

步驟1 - 聲明一個字符串輸入數據存儲爲全局變量

String awsState; 

代替:

int awsState = "AWS:0"; 

步驟2 - 初始化在setup()

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

步驟3 - 提取所有接收到的字符,顯示它們和過程,其中被定義`incomingByte`命令

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,你試過了嗎?我試圖模擬,因爲我沒有和我一起使用Arduino。 –