2013-08-28 148 views
0

我希望通過可用的UART端口將串行數據從Arduino Uno發送到Arduino Nano。Arduino到Arduino通過串行

在納米端接收數據時,我必須檢查數據是否與「a」或「b」匹配。如果是這樣,我必須將數據發送回Uno。

我用下面的代碼在納米方面:

void GMP_OutputSerial(void) 
{ 
    if(Serial.available())            // Check if serial data is avaiable 
    { 
    unSerialAvailable = Serial.read();        // Read the data if serial data is available 
    if(unSerialAvailable == 'A' || unSerialAvailable == 'B' || unSerialAvailable == 'a' || unSerialAvailable == 'b')   // Proceed only if available data is equal to A or B 
    { 
     /* 
     if(g_stSensorParms.stAppParms.unFinalDistance > 80 || g_stSensorParms.stAppParms.unFinalDistance < 0) 
     { 
     Serial.println("Distance: Out of range"); 
     } 
     else 
     { 
     */ 
     Serial.print("Distance: ");          // Output Distance text on the serial monitor 
     Serial.println(g_stSensorParms.stAppParms.unFinalDistance);  // Output the actual distance on the serial monitor 
    } 
    } 
} 

在歐諾方面:

void loop() 
{ 
    Serial.write(a); 
    delay(1); 
} 

不過,我看不出有任何通信發生。兩塊電路板的電源來自外部電源= 5V。

Uno的TX線連接到納米的RX線,反之亦然。

我在做什麼錯?

+1

*「我看不到任何交流發生。」* - 您可能只是表示您沒有看到預期數據的接收。 「通信」涉及傳輸和接收。您可能沒有檢查傳輸。您可以在Uno'x TxD引腳上使用'範圍,或者像@Keroronsk所說的那樣嗅探端口。 – sawdust

回答

3

Serial.write(a);,a等於'A'?或者你的意思是Serial.write('A')

p.s.你實際上可以通過佈線1英尺來爲串口製造便宜的「嗅探器」。連接到DB9連接器,插入COM端口(或USB到串行適配器),然後在arduino RX \ TX線路上「查看」實際數據。

0

您是否在每個電路板的設置功能中放置了Serial.begin(9600)? 如果你發佈在UNO上運行的核心,它也會有所幫助。 或者至少要確認你已經證實它可以正常工作,例如用OP寫的,用PC替換Nano。 UNO在發送和接收線路都有發光二極管,因此如果您使用的是「真實」串行端口,您可以輕鬆驗證是否有任何信息被傳輸。 arduino IDE還帶有集成的,易於使用的串口嗅探器。

0

請聲明char a='A'然後像下面這樣寫下來。

char a='A'; 
void setup() 
{ 

    Serial.begin(9600); 

} 

void loop() 
{ 

    Serial.write(a); 
    delay(10); 
} 
1

從Arduino的UNO

void setup() 
{ 
    Serial.begin(9600); 
} 
void loop() 
{ 
Serial.print("a"); 
} 

從Arduino的NANO

void setup() 
{ 
Serial.begin(9600); 
if(Serial.available()>0) 
{ 
char a = Serial.read(); 
} 
} 
0

上面提到的代碼應能正常工作, 我建議你創建一些校驗你的字符串當你試圖作爲兩者之間的串行連接進行傳輸時電路板對於大量數據不夠穩定。

+0

這實在是一個評論,而不是一個答案。有了更多的代表,[你將能夠發表評論](// stackoverflow.com/privileges/comment)。 – manetsus

0

上傳腳本之前,只需刪除RX TX連接,並在上傳成功後重新連接它們並再次chk。 此時設置數據速率並不重要,因爲即使兩個芯片之間的數據速率不匹配(最有可能發生),您將得到的錯誤也是失真的數據,所以您將有傳輸但不會你想要的方式