簡體   English   中英

xbee arduino通信編程

[英]xbee arduino communication programming

我嘗試測試系統,但不確定是xbee,傳輸代碼還是接收代碼出問題。 在發布代碼之前,我將解釋我們如何處理信號。 我們有三種模擬信號,它們將使用arduino和xbee屏蔽通過一個xbee串行發送。 我們想將這些信號發送到接收xbee,在那里arduino將輸出這些信號,並通過Simulink程序中使用的電線將其連接到第三arduino。 我們在發送側使用arduino mega,在接收側使用arduino uno。 有人告訴我我需要進行串行流傳輸,但是我不確定該怎么做。 我了解xbee和arduinos都將信號數字化,但是我們希望獲得與我們正在傳輸的模擬信號非常相似的信號。 任何幫助都將不勝感激!
這就是我在AT模式下配置xbees(系列1)的方式:

傳輸Xbee:
通道:10
窗格編號:1234
我:10
DL:11
接收Xbee:
通道:10
潘ID:1234
我:11
DL:10

傳輸Arduino代碼:

void setup() {  
    Serial.begin(9600);  
}  
void loop() {  
// read the input on analog pins  
int sensorValue1 = analogRead(A0);  
int sensorValue2 = analogRead(A1);  
int sensorValue3 = analogRead(A2);  
// print out the value you read:  
Serial.println(sensorValue1);  
Serial.println(sensorValue2);  
Serial.println(sensorValue3);  
delay(1);          
}  

接收Arduino代碼:

int received1=8;  
int received2=9;  
int received3=10;  
void setup(){  
    pinMode(received1, OUTPUT);  
    pinMode(received2, OUTPUT);  
    pinMode(received3, OUTPUT);  
    Serial.begin(9600);  
}  
void loop(){  
    if(Serial.available() )  
    {  
        byte output1 = Serial.read();  
        byte output2 = Serial.read();  
        byte output3 = Serial.read();  
        digitalWrite(received1, HIGH);  
        digitalWrite(received2, HIGH);  
        digitalWrite(received3, HIGH);  
    }  
}

聽起來您好像在“ AT模式”或“透明串行”模式下使用XBee模塊,其中在模塊A的串行端口上接收的所有內容都從模塊B的串行端口發送出去,反之亦然。

如果是這種情況,將兩個設備的串行端口直接彼此連接可能會有助於您進行初始開發。 在此處制定您的串行協議,然后嘗試在安裝了XBee模塊的情況下運行它作為串行電纜的替代品。

考慮要發送的數據的格式,以及在另一端如何處理它。 您將如何分離讀數並確定它們屬於哪個模擬輸入? 使用當前代碼,您可以在單獨的行上打印讀數,但是不清楚是哪個A0 也許您想將它們發送給一行,並且每次閱讀之間都用逗號隔開?

在接收端,您需要使用像atoi()strtoul()這樣的C函數將文本轉換回整數。

如果您試圖在Arduino上創建模擬輸出,則可能使用使用PWM(脈沖寬度調制)的數字輸出。 這個Instructable很好地描述了這個概念。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM