close

arduino 通訊-UART序列埠篇(RX,TX)

 

Arduino的序列埠

 

源自於PC電腦的RS-232通訊協定

也就是我們所謂的COM埠

但隨著時間和科技的發展

USB逐漸取代了COM埠

 

不過至今我們還是用晶片來USB轉換訊號

讓電腦跟Arduino溝通

 

而除了用USB讓PC跟Arduino溝通外

Arduino也可以用RX,TX接腳

來跟另一台Arduino溝通喔👍👍👍👍😎

 

用RX,TX 接腳讓兩部Arduino溝通

與如何增加Arduino的RX,TX 接腳

詳細教學請見另一篇文章:

 

 

程式的部分,掌握以下六個基本語法:

1.  Serial.begin();      //設定通訊速率

2.  Serial.print();       //輸出

3.  Serial.println();   //輸出並換行

4.  Serial.write();      //另一種輸出方式

5.  Serial.read();       //讀取

6.  Serial.available();  //檢查是否有訊號

 

 

範例1:

void setup() {

  Serial.begin(9600);  //設定通訊速率

}

 

void loop() {

  while (!Serial.available()) {}   //直到暫存器出現訊號才跳出迴圈

 

  Serial.print("My name is ");  //輸出 My name is

  Serial.println("TC");   //輸出 TC ,並換行

 

  while (Serial.available()>0) {   //如果暫存器有訊號則不斷讀取直到沒有

    Serial.read();

  } 

}

 

 

以上的範例主要展現5種應用功能:

1. Serial.begin(9600);  //設定通訊速率

2. while (!Serial.available()) {}  //這句話是用來判斷是訊號

3. Serial.print("My name is ");   //未換行的輸出

4. Serial.println("TC");   //輸出後並換行的語法

5. while (Serial.available()>0) { 

    Serial.read();

    } 

    這段語法功能是讓暫存器的數據歸零

    因為電腦傳給arduino的訊號可能不只一個

 

 

 

執行截圖畫面:

1. 有加

while (Serial.available()>0) { 

    Serial.read();

這個語法的執行結果

可讓暫存器淨空

不讓while (!Serial.available()) {}

一直判斷暫存器有東西

 

 

2. 把

while (Serial.available()>0) { 

    Serial.read();

}

這句語法刪掉後

會一直無法停止執行

 

 

 

 

 

 

 

 

 

 

 

 

範例2:

void setup() {

  Serial.begin(9600);  //設定通訊速率

}

 

void loop() {

  int i;

  if (Serial.available() > 0) {

    i=Serial.read();

    Serial.write(i);

  }

}

 

 

Arduino讀取並顯示電腦的數值

就比較麻煩了

因為arduino收到顯示的是ASCII 碼

而且是一個字一個字傳輸

並不是單純的數字或字串

因此我們必須一次讀取一個數值

並用Serial.write();顯示出來

如果用Serial.print();顯示

出現的就是ASCII 碼

大家可以實驗看看👉


所以TC覺得Serial.write()

在大部分的時候還是比較實用

也比較方便

大家可以嘗試多用Serial.write()看看

 

 


最後

我在下一篇文章也將詳述如何增加RX、TX接腳

以防通訊腳位被占用掉

兩台arduino通訊(UART),增加RX,TX接腳


 

 

 

 

 

 

arrow
arrow
    創作者介紹
    創作者 Taiwan Teacher 的頭像
    Taiwan Teacher

    Taiwan Teacher

    Taiwan Teacher 發表在 痞客邦 留言(0) 人氣()