TCweng_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();
}
}
2. while (!Serial.available()) {} //這句話是用來判斷是訊號
3. Serial.print("My name is "); //未換行的輸出
4. Serial.println("TC"); //輸出後並換行的語法
5. while (Serial.available()>0) {
Serial.read();
}
這段語法功能是讓暫存器的數據歸零
因為電腦傳給arduino的訊號可能不只一個
while (Serial.available()>0) {
Serial.read();
}
這個語法的執行結果
可讓暫存器淨空
不讓while (!Serial.available()) {}
一直判斷暫存器有東西
Serial.read();
}
這句語法刪掉後
會一直無法停止執行
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()看看
有任何問題都可以在底下留言
大家一起討論😎✌👍
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()看看
有任何問題都可以在底下留言
大家一起討論😎✌👍
沒有留言:
張貼留言