Robofun 機器人論壇

標題: RS232 傳輸問題 [打印本頁]

作者: spookerst    時間: 2019-11-12 09:27
標題: RS232 傳輸問題
各位前輩,我第一次寫Arduino程式,遇到一個問題

我的架構大概是這樣

Arduino uno                Selection Valve
            RX        +        TX       
            TX                RX       
       
程式語言是下方

void setup()

{
  // put your setup code here, to run once:
  Serial.begin(9600);  //記得要設定鮑率
}

void loop()
{
// put your main code here, to run repeatedly:

  int list[8]={0,0x0E,'P',2,0,1};//開始.Address_W.Command.Command Value.檢查位元.停止

  int j;

    for(j=0;j<4;j++)   
    {        
          Serial.print(list[j]);
          Serial.print(" ");  //空格
    }

    Serial.println("");  //換列  
while(true);  //控制不會無限迴圈
}


int list[8]={0,0x0E,'P',2,0,1};//開始.Address_W.Command.Command Value.檢查位元.停止
我利用陣列方式傳輸寫入的指令,之後直接下Commad與閥門轉到哪個位置的 Command Value
卻一直無法將選擇閥門轉動,可否各位前輩給我一些建議

RheoLink I2C Communication Protocol for TitanEX.pdf

390.98 KB, 下載次數: 4151

Selection Valve


作者: 超新手    時間: 2019-11-12 11:06
說明書寫的是用 I2C, 但你用的是 UART?
作者: spookerst    時間: 2019-11-13 19:28
我記錯檔案了

我改寫成這樣

#include <Wire.h>  // Comes with Arduino IDE

void setup() {
  Serial.begin(19200);
  Serial.flush();
}

void loop() {
char A[5]={ 0x50, 0x30, 0x35, 0x0D};
Serial.write(&A[0],5);

while(true);  //控制不會無限迴圈
}

還是無法動作
可以給一些建議嗎??

UART USB Communication Protocol for TitanEX.pdf

364.55 KB, 下載次數: 4013


作者: 超新手    時間: 2019-11-14 12:17
除了多送一個 BYTE, 沒看有什麼問題
char A[4]={ 0x50, 0x30, 0x35, 0x0D};
Serial.write(&A[0],4);
如果還不行, 也許是 BUAD RATE 被改掉, 或是 RX TX 顛倒
BUAD RATE 只有4 種, 每個都試看看
9600, 19200, 38400, 57600

另外. 上面沒寫很清楚... 但還是問一下
"應該有共地吧?"


作者: spookerst    時間: 2019-11-21 11:20
超新手 發表於 2019-11-14 12:17
除了多送一個 BYTE, 沒看有什麼問題
char A[4]={ 0x50, 0x30, 0x35, 0x0D};
Serial.write(&A[0],4);

謝謝您的回覆,共地一定是有的

但修改後一樣無法動作,也嘗試更改兩邊的電路板,一樣無法動作

上次說的連接方式,忘記補上一顆IC TRS3232

Arduino uno              TRS3232                        Selection Valve  
          RX     +  RS232 TX (Pin 14)  +  UART TX (Pin 11)        
          TX     +  RS232 RX (Pin 13)  +  UART RX (Pin 12)  
作者: 超新手    時間: 2019-11-21 11:51
RX     +  RS232 TX (Pin 14)  +  UART TX (Pin 11)        
TX     +  RS232 RX (Pin 13)  +  UART RX (Pin 12)  
看不懂這樣的表示方法?
UNO 出來的是 UART, 怎麼會接 RS232?
接法應該是
ARDUINO RX(0), 不是接 PIN 9 就是 12(ROUT?)
ARDUINO TX(1), 不是接 PIN 10 就是 11(DIN?)
而且對方也是 UART, 為什麼需要  TRS3232
如果需要傳很遠, 那中間需要兩顆 TRS3232 才對吧?
作者: spookerst    時間: 2019-11-22 14:22
ARDUINO RX(0), 不是接 PIN 9 就是 12(ROUT?)
ARDUINO TX(1), 不是接 PIN 10 就是 11(DIN?)

這的確是我寫錯了

如您所說的,前人設計擔心距離的關係,增加mp243ei + TRS3232

因此我直接朓腺做測試是可以動作的

謝謝您





歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2