我目前的項目需要Arduino Uno通過串行與Arduino Mega進行通信,我想提高數據傳輸速率。試圖通過串行提高Arduino到Arduino的通信
此Arduino Uno通過使用analogRead()
(我已經測試過)通過橋接電路從應變儀提取信息。然後它通過串口將這些信息發送給Mega,然後使用USB電纜和串行通信將其發送到計算機。
這個Mega電路板是必需的,因爲Uno放置在一個旋轉軸上,它與Mega之間的通信是通過一個圓形光電耦合器完成的,我已經測試過,它也在工作。
有了這個,我正在以190Hz讀取旋轉的Uno的數據。我相信大部分問題是由於代碼中存在delay(5);
,但即使將其降至3ms也足以讓數據以缺失字符到達。
歐諾代碼:
void setup() {
Serial.begin(19200);
}
void loop() {
Serial.println(analogRead(A0));
delay(5);
}
兆碼:發送
char t;
void setup() {
Serial.begin(9600);
Serial1.begin(19200);
}
void loop() {
if (Serial1.available()>0)
{
t = Serial1.read();
Serial.print(t);
}
}
的數據始終是從0到1023的整數,因爲它來自analogRead()
,所以也許我可以編碼它更好,但我不知道該怎麼做,或者如果這將解決更大的問題,必要的delay(5);
非常感謝你
究竟是什麼問題?你首先說你想提高數據傳輸速率,但後來提到它正在丟失數據。 190Hz還會在哪裏出現?在你的代碼中唯一的波特率是9600和19200. –
所以問題如下:我需要提高這個系統的數據採集率。目前我正在以190Hz的速率從傳感器獲取信息。數據通常以4個字符的字符串形式發送:實際數字爲3,而在'println();'中有一個\ n,我每秒獲得這個數據190次。我提到的丟失數據不會發生,如果我將延遲保持在5ms,但據我所知,由於這種延遲,我無法每秒獲得超過200個數據樣本。 –