2012-11-22 77 views
0

這只是一個簡單的測試程序。我試圖讓Arduino的打印「接收」在液晶顯示屏上。我認爲這是我的陳述,導致錯誤,任何想法?Arduino的串行監視器輸入?

當前「發送」放入串行監視器時,什麼也沒有發生。

下面是代碼:

#include <LiquidCrystal.h> 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 

char serialinput; // for incoming serial data 

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

void loop() { 

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

      if (serialinput == 'send') 
      { 
      lcd.print("received"); 
      } 
    } 
} 

回答

3

您正在閱讀從您的串行端口一個字節(在C char),但你嘗試將它比作一個字符串:

如果你想讀4 char並將其與"send"那麼你會需要做的是這樣的:

#include <LiquidCrystal.h> 
#include <string.h> 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 

char serialinput [5] = {0}; // for incoming serial data 
           // 4 char + ending null char 

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

void loop() { 
    // send data only when you receive data: 
    if (Serial.available() > 0) { 
     memmove (serialinput, &serialinput[1], 3); // Move 3 previous char in the buffer 
     serialinput [3] = Serial.read(); // read char at the end of input buffer 

     if (0 == strcmp(serialinput, "send")) // Compare buffer content to "send" 
     { 
      lcd.print("received"); 
     } 
    } 
} 

假設<string.h>頭是Arduino的SDK

PS內有效:在C代碼litteral串寫之間(雙引號)。 '是用於字符。

+0

感謝您的幫助。 – user1739123

1

你有什麼錯誤上傳到Arduino是什麼時候?

+0

它上傳,但是當我把「送」的系列顯示器不打印在LCD「收到」。 – user1739123

+0

你是否嘗試初始化char變量作爲char數組? – user1683391

+0

也許這就是問題,我怎麼會初始化字符數組? – user1739123

相關問題