串口是單片機通信方式中很重要的一種,我們的鼠標和鍵盤等等都是通過串口進行通訊的,那麼如何更方便的使用Arduino的串口呢,今天,我把串口的使用心得總結如下,希望對你有所幫助哦:
一.串口的基本函數
串口連接(參數爲波特率)
- Serial.begin(9600);
清空串口緩存1.0版本之前爲清空串口緩存,現在該函數作用爲等待輸出數據傳送完畢。
- Serial.flush();
可以使用:while(Serial.read() >= 0){}來代替。
禁止串口,可稱爲IO口使用
-
Serial.end();
串口輸出 -
Serial.print();
串口換行輸出
- Serial.println();
串口讀取一個字節(讀取後從緩衝區刪除該字節)
- Serial.read();
從緩衝區讀取所有字符串(返回讀取的緩衝區字符串)
- Serial.readString();
讀取一個整數(返回讀取的整數) - Serial.parseInt();
緩衝區準確的可讀字節數(返回一個整數)
- Serial.available()
緩衝區監聽函數(可以監聽緩衝區接收到數據事件)
- void serialEvent(){ }
二.串口的函數使用詳解
1、開啓一個串口,定義波特率爲115200
void setup() {
Serial.begin(115200);
}
對於mega2560相關板子,片上有多個串口,可以同時開啓多個,如:
void setup() {
Serial.begin(115200);
Serial1.begin(115200);
Serial2.begin(115200);
Serial3.begin(115200);
}
2、串口發送數據:
一般輸出函數:Serial.print();
使用串口發送不同格式的數據
Serial.print(78, BIN) //得到 1001110
Serial.print(78, OCT) //得到 116
Serial.print(78, DEC) //得到 78
Serial.print(78, HEX) //得到 4E
Serial.print(1.23456, 0) //得到 1
Serial.print(1.23456, 2) //得到 1.23
Serial.print(1.23456, 4) //得到 1.2346
Serial.print('N') //得到 N
Serial.print("Hello world.") //得到 Hello world.
換行輸出:Serial.println();
使用方法和 Serial.print();相同,只是輸出的數據會自動換行。對於多串口的輸出,如: Serial1.print();,Serial2.print();
2、串口讀取數據:
Serial.available() 獲取緩衝區可讀取的字節數,該函數通常用來判斷緩衝區是否接收到了可讀數據
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
delay(100); // 延時等待數據傳完
int dataNum = Serial.available(); //獲取可讀取的字節數量
Serial.print("當前可讀取的字節數爲:"); //向串口打印數據
Serial.print(dataNum);
}
- 使用循環檢測的方式讀取數據
String inputString;/定義一個字符串用來存放讀取的數據
void setup() {
Serial.begin(115200);//串口初始化
}
void loop() {
// 系統循環內檢測緩衝區
while(Serial.available()){
char inChar = (char)Serial.read(); //每次讀取一個字節
delayMicroseconds(5000); //延時等待下一個數據接收到(單位1ms)
inputString +=inChar; //將接收的字節拼接到字符串
}
Serial.println(inputString); //串口返回打印接收到的數據
inputString=""; //清空接收的數據
}
- 使用緩衝區監聽的方式讀取數據
String inputString;/定義一個字符串用來存放讀取的數據
void setup() {
Serial.begin(115200);//串口初始化
}
void loop() {
// 系統循環內不執行程序
}
//該方法自動檢測緩衝區接受數據事件,一旦有數據接收,就會觸發執行
void serialEvent(){
while(Serial.available()){
char inChar = (char)Serial.read(); //每次讀取一個字節
delayMicroseconds(5000); //延時等待下一個數據接收到(單位1ms)
inputString +=inChar; //將接收的字節拼接到字符串
}
Serial.println(inputString); //串口返回打印接收到的數據
inputString=""; //清空接收的數據
}
- 串口接收整數數據:
if(Serial.available()){
int inNum = Serial.parseInt(); //每次讀取一個字節
Serial.println(inNum); //串口返回打印接收到的數據
}
加關注,不迷路!!!!!!!!!!