串口是Arduino與其它設(shè)備進(jìn)行通信的接口,,我們需要很好的掌握它的使用,。Arduino串口使用相關(guān)的函數(shù)共有10個(gè)(隨著版本的升級(jí),,新版本加入了更多,,具體請(qǐng)參見(jiàn)官網(wǎng):http://www./),。
Serial.begin(); //開(kāi)啟串口
Serial.end(); //關(guān)閉串口
Serial.available();//判斷串口緩沖器是否有數(shù)據(jù)裝入
Serial.read(); //讀取串口數(shù)據(jù)
Serial.peek(); //返回下一字節(jié)(字符)輸入數(shù)據(jù),但不刪除它
Serial.flush(); //清空串口緩存
Serial.print(); //寫(xiě)入字符串?dāng)?shù)據(jù)到串口
Serial.println(); //寫(xiě)入字符串?dāng)?shù)據(jù)+換行到串口
Serial.write(); //寫(xiě)入二進(jìn)制數(shù)據(jù)到串口
Serial.SerialEvent();//read時(shí)觸發(fā)的事件函數(shù)
Serial.readBytes(buffer,length);//讀取固定長(zhǎng)度的二進(jìn)制流
例子1:
- int val;//定義變量val
- int ledpin=13;//定義數(shù)字接口13
-
- void setup()
- {
- Serial.begin(9600);//設(shè)置波特率為9600,,這里要跟軟件設(shè)置相一致,。當(dāng)接入特定設(shè)備(如:藍(lán)牙)時(shí),我們也要跟其他設(shè)備的波特率達(dá)到一致,。
- pinMode(ledpin,OUTPUT);//設(shè)置數(shù)字13 口為輸出接口,,Arduino 上我們用到的I/O 口都要進(jìn)行類似這樣的定義。
- }
-
- void loop()
- {
- val=Serial.read();//讀取PC 機(jī)發(fā)送給Arduino 的指令或字符,,并將該指令或字符賦給val
- if(val=='R')//判斷接收到的指令或字符是否是“R”,。
- {//如果接收到的是“R”字符
- digitalWrite(ledpin,HIGH);//點(diǎn)亮數(shù)字13 口LED。
- delay(500);
- digitalWrite(ledpin,LOW);//熄滅數(shù)字13 口LED
- delay(500);
- Serial.println("Hello World!");//顯示“Hello World,!”字符串
- }
運(yùn)行結(jié)果如下圖所示:
例子2:
- int incomingByte = 0;
- void setup()
- {
- Serial.begin(9600);
- }
- void loop()
- {
- if(Serial.available() >0 )
- {
- incomingByte = Serial.read();
- Serial.print("I received: ");
- Serial.println(incomingByte,DEC);
- }
- }
運(yùn)行結(jié)果如下所示:
Serial.println(incomingByte, DEC);打印接到數(shù)據(jù)十進(jìn)制表示的ascii碼,。
peek():功能類似于read(),但是我們知道當(dāng)調(diào)用一次read()后,緩沖區(qū)的數(shù)據(jù)流會(huì)被讀取并刪除read過(guò)的數(shù)據(jù),,也就是available值會(huì)減少,,但peek()不會(huì)出現(xiàn)類似情況,其功能類似于檢測(cè)緩沖區(qū)的頭部數(shù)據(jù),,反復(fù)調(diào)用peek()返回的值是一樣的,。用得好的話可以精簡(jiǎn)很多代碼。
write():寫(xiě)入二進(jìn)制數(shù)據(jù)到串行端口,。這個(gè)數(shù)據(jù)是作為一個(gè)字節(jié)或字節(jié)序列發(fā)送的,。如果發(fā)送字符串則需要用到print方法。
最后注意一下:當(dāng)燒程序入板卡的時(shí)候,,在完成前即L,、TX、RX燈閃爍前,,斷開(kāi)數(shù)據(jù)線很可能損壞硬件,。同時(shí)測(cè)試前養(yǎng)成按一次reset鍵復(fù)位的習(xí)慣,,這里特別注意,在打開(kāi)串口監(jiān)視器后,,需要reset一次,,否則無(wú)法看到效果。
|