久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Arduino串口的使用——與計(jì)算機(jī)交流

 昵稱(chēng)68417077 2020-02-11

前面的示例中使用到了Serial.begin(),、Serial.print() 等語(yǔ)句,,這些語(yǔ)句便是在操作串口。Arduino與計(jì)算機(jī)通信最常用的方式就是串口通信,這在之前的學(xué)習(xí)中已經(jīng)接觸多次。

我們使用USB線連接Arduino Uno與計(jì)算機(jī)時(shí),,Arduino Uno會(huì)在計(jì)算機(jī)上虛擬出一個(gè)串口設(shè)備,此時(shí)兩者之間便建立了串口連接,。通過(guò)此連接,,Arduino Uno便可與計(jì)算機(jī)互傳數(shù)據(jù),。

使用串口與計(jì)算機(jī)通信,,需要先使用Serial.begin() 初始化Arduino的串口通信功能。

Serial.begin(speed);

參數(shù)speed是指串口通信波特率,,這是設(shè)定串口通信速率的參數(shù),。串口通信的雙方必須使用同樣的波特率,方能正常進(jìn)行通信,。

波特率是一個(gè)衡量通信速度的參數(shù),。它表示每秒鐘傳送的bit的個(gè)數(shù)。例如9600波特表示每秒發(fā)送9600bit的數(shù)據(jù),。通信雙方需要使用一致的的波特率才能正常通信,。Arduino串口通信通常會(huì)使用以下波特率:

300、600,、1200,、2400、4800,、9600,、14400、19200,、28800,、38400、57600,、115200,。

波特率越大,說(shuō)明串口通信的速率越快。

串口輸出

串口初始化完成后,,我們便可以使用Serial.print() 或Serial.println() 向計(jì)算機(jī)發(fā)送信息了,。

Serial.print(val);

參數(shù)val是你要輸出的數(shù)據(jù),各種類(lèi)型的數(shù)據(jù)均可,。

Serial.println(val);

Serial.println(val) 語(yǔ)句也是使用串口輸出數(shù)據(jù),,不同的是println() 函數(shù)會(huì)在輸出完指定數(shù)據(jù)后,再輸出一組回車(chē)換行符,。

下面的示例程序中,,演示了使用串口輸出數(shù)據(jù)到計(jì)算機(jī):

int counter=0; // 計(jì)數(shù)器void setup() {// 初始化串口  Serial.begin(9600);}void loop() {// 每loop循環(huán)一次,計(jì)數(shù)器變量加1counter = counter+1;// 輸出變量Serial.print(counter);// 輸出字符Serial.print( ':' );// 輸出字符串;Serial.println('Hellow World');delay(1000);}

上傳該程序到Arduino Uno,,然后可以通過(guò)Arduino IDE右上角的 圖標(biāo)打開(kāi)串口監(jiān)視器,。你會(huì)看到如圖2-48的信息。

QQ截圖20190126204743.jpg

圖 2?48 串口輸出信息

串口監(jiān)視器是Arduino IDE自帶的一個(gè)小工具,,可以查看到串口傳來(lái)的信息,,也可以向連接的設(shè)備發(fā)送信息。需要注意的是,,在串口監(jiān)視器右下角,,有一個(gè)波特率設(shè)置下拉框,波特率設(shè)置必須和燒入程序中設(shè)置的一致,,才能正常收發(fā)數(shù)據(jù),。

通過(guò)Serial.print() 語(yǔ)句將傳感器獲得的數(shù)據(jù)輸出到計(jì)算機(jī)的方法,在之前的章節(jié)中已進(jìn)行過(guò)演示,。

串口輸入

除了輸出,,串口同樣可以接收由計(jì)算機(jī)輸出的數(shù)據(jù)。接收串口數(shù)據(jù)需要使用Serial.read()函數(shù),。

Serial.read();

調(diào)用該語(yǔ)句,,每次都會(huì)返回一個(gè)字節(jié)的數(shù)據(jù),這個(gè)返回值便是當(dāng)前串口讀取到的數(shù)據(jù),。

上傳以下程序到Arduino:

void setup() {  // 初始化串口  Serial.begin(9600);}void loop() {  // 讀取輸入的信息  char ch=Serial.read();  // 輸出信息  Serial.print(ch);  delay(1000); }

上傳成功后,,運(yùn)行串口監(jiān)視器,在發(fā)送按鍵左側(cè)的文本框中輸入要發(fā)送的信息,,如'arduino',,你會(huì)看到Arduino在輸出了你輸入的信息同時(shí),還輸出了很多亂碼(如圖2-49所示),。

QQ截圖20190126205518.jpg

圖 2?49 串口輸入信息

這些亂碼是因?yàn)榇诰彌_區(qū)中沒(méi)有可讀數(shù)據(jù)造成的,。當(dāng)緩沖區(qū)中沒(méi)有可讀數(shù)據(jù)時(shí),read()函數(shù)會(huì)返回int型值-1,,而int型-1對(duì)應(yīng)的char型數(shù)據(jù)便是該亂碼,。

在使用串口時(shí),,Arduino Uno會(huì)在SRAM中開(kāi)辟一段大小為256 bytes的空間,串口接收到的數(shù)據(jù)都會(huì)被暫時(shí)存放進(jìn)這個(gè)空間中,,這個(gè)存儲(chǔ)空間,,我們稱(chēng)之為緩沖區(qū)。當(dāng)你調(diào)用Serial.read()語(yǔ)句時(shí),,Arduino便會(huì)從緩沖區(qū)取出一個(gè)字節(jié)的數(shù)據(jù),。

通常使用串口讀取數(shù)據(jù)時(shí),需要搭配Serial.available() 語(yǔ)句使用,。

Serial.available();

Serial.available() 的返回值便是當(dāng)前緩沖區(qū)中接收到的數(shù)據(jù)字節(jié)數(shù),。

Serial.available() 可以搭配if 或者while使用,先檢測(cè)緩沖區(qū)中是否有可讀數(shù)據(jù),,如果有數(shù)據(jù),,再讀取,沒(méi)有數(shù)據(jù)便跳過(guò)讀取或等待讀取,。如:

if( Serial.available() > 0 )

while( Serial.available() > 0 )

示例程序代碼如下:

void setup() {  // 初始化串口  Serial.begin(9600);}void loop() {// 如果緩沖區(qū)中有數(shù)據(jù),,則讀取并輸出if(Serial.available()>0)  {    char ch=Serial.read();    Serial.print(ch);  }}

上傳完成后,打開(kāi)串口監(jiān)視器,,鍵入并發(fā)送任意信息,。你會(huì)看到Arduino輸出了你發(fā)送過(guò)去的信息,并且不會(huì)再出現(xiàn)亂碼了(如圖2-50所示),。

QQ截圖20190126205822.jpg

圖 2?50 結(jié)合available()的輸入效果

需要注意的是,,在串口監(jiān)視器右下角有兩個(gè)選項(xiàng),,一個(gè)是設(shè)置結(jié)束符,,一個(gè)是設(shè)置波特率。如果你設(shè)置了結(jié)束符,,則在你最后發(fā)送完數(shù)據(jù)后,,串口監(jiān)視器會(huì)自動(dòng)發(fā)送一組你設(shè)定的結(jié)束符,如回車(chē)符和換行符,。

可能已經(jīng)注意到了,,當(dāng)串口通信時(shí),Arduino控制器上的標(biāo)有RX,、TX的兩LED燈會(huì)閃爍提示,,接收數(shù)據(jù)時(shí),RX燈會(huì)點(diǎn)亮,,發(fā)送數(shù)據(jù)時(shí),,TX燈會(huì)點(diǎn)亮。

此外,,在涉及串口通信的Arduino Uno例程程序中,,還會(huì)經(jīng)??吹饺缦绿厥庥梅ǎ?/p>

while (!Serial) { }

這是在等待串口監(jiān)視器開(kāi)啟,開(kāi)啟串口監(jiān)視器后,,!Serial將為假,,即會(huì)運(yùn)行該while循環(huán)后的語(yǔ)句。

利用串口通信功能,,我們可以使用計(jì)算機(jī)來(lái)控制Arduino執(zhí)行特定的操作,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多