0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Arduino串行

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-18 17:21 ? 次閱讀

第1步:

說明

指示指定的串行端口是否已就緒。

在基于32u4的板上(Leonardo,Yùn,ecc),如果((串行))指示USB CDC串行連接是否打開。對(duì)于所有其他實(shí)例,包括Leonardo上的if(Serial1),它將始終返回true。

這是Arduino 1.0.1中引入的。

如何使用Arduino串行

語法

所有板:if(Serial)

特定于Arduino Leonardo:if(Serial1)

特定于Arduino Mega的:if(Serial1)if(Serial2)if(Serial3)

參數(shù)

返回

布爾值:如果指定的串行端口為true,則返回true可用。僅在準(zhǔn)備好之前查詢Leonardo的USB CDC串行連接時(shí),這將返回false。

示例:

void setup(){

//初始化串行并等待端口打開:

Serial.begin(9600);

while(!Serial){

;//等待串口連接。本地USB所需

}

}

void loop(){

//正常進(jìn)行

}

步驟2:命令:Available()

描述

獲取可用于從串行端口讀取的字節(jié)數(shù)(字符)。這是已經(jīng)到達(dá)并存儲(chǔ)在串行接收緩沖區(qū)(包含64個(gè)字節(jié))中的數(shù)據(jù)。 available()繼承自Stream實(shí)用程序類。

語法

Serial.available( )

僅適用于Arduino Mega:Serial1.available()Serial2.available()Serial3.available()

參數(shù)

的返回 的

可讀取的字節(jié)數(shù)

示例

int entryingByte = 0;//用于輸入串行數(shù)據(jù)

void setup(){

Serial.begin(9600);//打開串行端口,將數(shù)據(jù)速率設(shè)置為9600 bps

}

void loop(){

//僅在接收數(shù)據(jù)時(shí)才發(fā)送數(shù)據(jù):

if(Serial.available()》 0){

//讀取傳入的字節(jié):

傳入的字節(jié)= Serial.read();

////說說你得到了什么:

Serial.print(“我收到了:”);

Serial.println(incomingByte,DEC);

}

}

第3步:命令:AvailableForWrite()

說明

獲取可用于在串行緩沖區(qū)中寫入而不阻止寫入操作的字節(jié)數(shù)(字符)。

的的語法 的

Serial.availableForWrite()

的僅限Arduino Mega :

Serial1.availableForWrite()

Serial2.availableForWrite()

Serial3.availableForWrite ()

步驟4:命令:Begin()

描述

設(shè)置串行的數(shù)據(jù)速率,以每秒比特?cái)?shù)(波特)為單位數(shù)據(jù)傳輸。要與計(jì)算機(jī)通信,請(qǐng)使用以下費(fèi)率之一:300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600或115200。但是,您可以指定其他費(fèi)率-例如,通過引腳0和1與需要特定波特率的組件進(jìn)行通信。

可選的第二個(gè)參數(shù)配置數(shù)據(jù),奇偶校驗(yàn)和停止位。默認(rèn)值為8個(gè)數(shù)據(jù)位,無奇偶校驗(yàn),一個(gè)停止位。

語法

Serial.begin(speed)Serial.begin(speed,config)

僅適用于Arduino Mega:Serial1.begin(速度)Serial2.begin(速度)Serial3.begin(速度)Serial1.begin(速度,配置)Serial2.begin(速度,配置)Serial3.begin(速度) ,配置)

參數(shù)

速度:以每秒比特?cái)?shù)(波特)為單位-長(zhǎng)config:設(shè)置數(shù)據(jù),奇偶校驗(yàn)和停止位。有效值為:

SERIAL_5N1

SERIAL_6N1

SERIAL_7N1

SERIAL_8N1(默認(rèn)值)

SERIAL_5N2

SERIAL_6N2

SERIAL_7N2

SERIAL_8N2

SERIAL_5E1

SERIAL_6E1

SERIAL_7E1

SERIAL_8E1

SERIAL_5E2

SERIAL_6E2

SERIAL_7E2

SERIAL_8E2

SERIAL_5O1

SERIAL_6O1

SERIAL_7O1

SERIAL_8O1

SERIAL_5O2

SERIAL_6O2

SERIAL_7O2

SERIAL_8O2

示例:

void setup(){

序列號(hào).begin(9600);//打開串行端口,將數(shù)據(jù)速率設(shè)置為9600 bps

}

void loop(){}

第5步:命令:串行.find()

,點(diǎn)擊 的描述

Serial.find( )從串行緩沖區(qū)讀取數(shù)據(jù),直到找到給定長(zhǎng)度的目標(biāo)字符串為止。如果找到目標(biāo)字符串,則該函數(shù)返回true,如果超時(shí)則返回false。

Serial.find()從Stream實(shí)用程序類繼承。

語法

Serial.find(target)

步驟6:命令:Peek()

描述

返回輸入的串行數(shù)據(jù)的下一個(gè)字節(jié)(字符),而不會(huì)從內(nèi)部串行緩沖區(qū)中刪除它。也就是說,對(duì)peek()的連續(xù)調(diào)用將返回相同的字符,與對(duì)下一次對(duì)read()的調(diào)用一樣。 peek()繼承自Stream實(shí)用程序類。

語法

Serial.peek( )

僅Arduino Mega:

Serial1.peek()

Serial2.peek()

Serial3.peek()

步驟7:命令:Print()

描述

將數(shù)據(jù)作為人類可讀的ASCII文本打印到串行端口。該命令可以采用多種形式。數(shù)字使用每個(gè)數(shù)字的ASCII字符打印。浮點(diǎn)數(shù)類似地以ASCII數(shù)字打印,默認(rèn)為兩位小數(shù)。字節(jié)作為單個(gè)字符發(fā)送。字符和字符串按原樣發(fā)送。例如:

Serial.print(78)給出“ 78” Serial.print(1.23456)給出“ 1.23” Serial.print(‘N’)給出“ N” Serial.print(“ Hello world。 ”)給出“ Hello world”。第二個(gè)可選參數(shù)指定要使用的基本格式。允許的值為BIN(二進(jìn)制或以2為底),OCT(八進(jìn)制或以8為底),DEC(十進(jìn)制或以10為底),HEX(十六進(jìn)制或以16為底)。對(duì)于浮點(diǎn)數(shù),此參數(shù)指定要使用的小數(shù)位數(shù)。例如:

Serial.print(78,BIN)給出“ 1001110” Serial.print(78,OCT)給出“ 116” Serial.print(78,DEC)給出“ 78” Serial.print( 78,HEX)給出“ 4E” Serial.println(1.23456,0)給出“ 1” Serial.println(1.23456,2)給出“ 1.23” Serial.println(1.23456,4)給出“ 1.2346”您可以傳遞閃存通過使用F()將字符串包裝到Serial.print()中。例如:

Serial.print(F(“ Hello World”))要發(fā)送單個(gè)字節(jié),請(qǐng)使用Serial.write()。

語法

Serial.print(val)Serial.print(val,format)

參數(shù)

val:要打印的值-任何數(shù)據(jù)類型

格式:指定數(shù)字基(對(duì)于整數(shù)數(shù)據(jù)類型)或小數(shù)位數(shù)(對(duì)于浮點(diǎn)類型)

返回

size_t(長(zhǎng)):print()返回寫入的字節(jié)數(shù),盡管讀取該字節(jié)數(shù)是可選的

示例 :

/*

對(duì)數(shù)據(jù)使用FOR循環(huán)并以各種格式打印數(shù)字。

*/

int x = 0;//變量

void setup(){

Serial.begin(9600);//以9600 bps打開串行端口:

}

void loop(){

//打印標(biāo)簽

串行。 print(“ NO FORMAT”);//打印標(biāo)簽

Serial.print(“ \ t”);//打印標(biāo)簽

Serial.print(“ DEC”);

Serial.print(“ \ t”);

Serial.print(“ HEX”);

Serial.print(“ \ t”);

Serial.print(“ OCT”);

Serial.print(“ \ t”);

Serial.print(“ BIN”);

Serial.print(“ \ t”);

for(x = 0; x 《64; x ++){//僅是ASCII圖表的一部分,更改為適合

//將其打印成多種格式:

Serial.print(x);//打印為ASCII編碼的十進(jìn)制-與“ DEC”一樣

Serial.print(“ \ t”);//打印標(biāo)簽

Serial.print(x,DEC);//打印為ASCII編碼的十進(jìn)制

Serial.print(“ \ t”);//打印標(biāo)簽

Serial.print(x,HEX);//打印為ASCII編碼的十六進(jìn)制

Serial.print(“ \ t”);//打印標(biāo)簽

Serial.print(x,OCT);//打印為ASCII編碼的八進(jìn)制

Serial.print(“ \ t”);//打印標(biāo)簽

Serial.println(x,BIN);//打印為ASCII編碼的二進(jìn)制文件

////然后使用“ println”添加回車符

delay(200);//延遲200毫秒

}

Serial.println(“”);//打印另一個(gè)回車符

}

步驟8:命令:Println()

描述

將數(shù)據(jù)作為人類可讀的ASCII文本打印到串行端口,后跟回車符(ASCII 13或‘\ r’)和換行符(ASCII 10或‘\ n’)。此命令的格式與Serial.print()相同。

語法

Serial .println(val)串行.println(val,格式)

參數(shù)

val :要打印的值-任何數(shù)據(jù)類型

格式:指定基數(shù)(對(duì)于整數(shù)數(shù)據(jù)類型)或小數(shù)位數(shù)(對(duì)于浮點(diǎn)類型)

返回

size_t(長(zhǎng)整數(shù)):println()返回寫入的字節(jié)數(shù),盡管讀取該數(shù)字是可選的

示例:

/*

模擬輸入

讀取模擬輸入0上的模擬輸入,將值打印出來。

由Tom Igoe創(chuàng)建于2006年3月24日

*/

int AnalogValue = 0;//變量以保留模擬值

void setup(){

//以9600 bps打開串行端口:

Serial.begin(9600) ;

}

void loop(){

//讀取引腳0上的模擬輸入:

AnalogValue = AnalogRead(0 );

//以多種格式打印出來:

Serial.println(analogValue);//打印為ASCII編碼的十進(jìn)制

Serial.println(analogValue,DEC);//打印為ASCII編碼的十進(jìn)制

Serial.println(analogValue,HEX);//打印為ASCII編碼的十六進(jìn)制

Serial.println(analogValue,OCT);//打印為ASCII編碼的八進(jìn)制

Serial.println(analogValue,BIN);//打印為ASCII編碼的二進(jìn)制文件

////下次讀取前延遲10毫秒:

delay(10);

}
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 串行
    +關(guān)注

    關(guān)注

    0

    文章

    237

    瀏覽量

    33769
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6458

    瀏覽量

    186504
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ESP-12 ESP8266如何通過I2C將SSID和RSSI信息發(fā)送到RPi / Arduino?

    我正在尋找我的 ESP-12 ESP8266,以便通過 I2C 將 SSID 和 RSSI 信息發(fā)送到 RPi / Arduino。關(guān)于如何進(jìn)行的任何建議? 我查看了文檔,不禁注意到 SSID
    發(fā)表于 07-22 07:36

    ESP8266為什么不響應(yīng)Arduino?

    arduino,其中從串行監(jiān)視器接收的任何命令都會(huì)轉(zhuǎn)發(fā)到連接到 esp8266 的串行器(mega 有 4 個(gè)硬件串行端口)。然而,即使是一個(gè)簡(jiǎn)單的“AT”命令也不會(huì)從 wifi
    發(fā)表于 07-16 06:39

    ESP-WROOM-02D為什么無法響應(yīng)AT命令?

    我有兩個(gè)不同的模塊,它們?cè)谑褂貌煌瑧?yīng)用程序(我使用 Arduino 串行)和另一個(gè) Linux 應(yīng)用程序的不同計(jì)算機(jī)上以相同的方式響應(yīng),并且總是得到相同的結(jié)果,即沒有響應(yīng)。我嘗試了不同的變體,即新行
    發(fā)表于 07-15 07:32

    ESP8266 Huzzah不響應(yīng)AT命令的原因?

    我的 esp8266 Huzzah 分線板最近使用 esp 閃存工具,使用 NONOS SDK v2.0.0 重新刷新。我認(rèn)為這將允許 esp 在通過 arduino 串行監(jiān)視器發(fā)送 AT 命令
    發(fā)表于 07-11 08:21

    ESP8266-12E和Arduino框架時(shí),在建立串行連接時(shí)必須將GPIO15拉至低電平才能工作,為什么?

    使用 NodeMCU (ESP8266-12E) 和 Arduino 框架時(shí),我注意到在建立串行連接時(shí)必須將 GPIO15 拉至低電平。否則串行連接無法正常工作。這是什么原因,有沒有一份文件可以讓我閱讀?
    發(fā)表于 07-10 07:43

    idf-arduino component組件怎么設(shè)置 ?

    idf -arduino component組件該怎么設(shè)置 ,。 CMake Warning at E:/COMPILE/Othert/IDF4.4/esp-idf-v4.4/tools
    發(fā)表于 06-12 07:27

    求助,在esp-idf中使用arduino作為組件后怎樣使用arduino的庫?

    在esp-idf中使用arduino作為組件后怎樣使用arduino的庫,例如我此時(shí)需要使用arduino的第三方庫blinker,怎樣使用?
    發(fā)表于 06-12 07:21

    常見串行通信協(xié)議 串行通信和并行通信的區(qū)別

    串行通信是一種通過單個(gè)傳輸線按照順序傳送數(shù)據(jù)的通信方式。在串行通信中,每個(gè)數(shù)據(jù)位按照順序依次傳輸,一個(gè)接一個(gè)地發(fā)送到目標(biāo)設(shè)備。
    的頭像 發(fā)表于 03-05 16:38 ?1182次閱讀
    常見<b class='flag-5'>串行</b>通信協(xié)議 <b class='flag-5'>串行</b>通信和并行通信的區(qū)別

    arduino如何停止loop循環(huán)

    Arduino的loop循環(huán)是其主要的程序執(zhí)行部分,該循環(huán)將在Arduino開發(fā)板上持續(xù)運(yùn)行,并且只有在程序被重新上傳或開發(fā)板斷電重啟時(shí)才會(huì)停止。然而,在某些情況下,你可能需要在程序執(zhí)行過程中停止或
    的頭像 發(fā)表于 02-14 16:24 ?4039次閱讀

    arduino中while循環(huán)怎么跳出

    Arduino 是一款開源的硬件平臺(tái),廣泛應(yīng)用于各種物聯(lián)網(wǎng)和嵌入式系統(tǒng)項(xiàng)目。在 Arduino 上編寫代碼時(shí),循環(huán)結(jié)構(gòu)起到了至關(guān)重要的作用。而其中的 while 循環(huán)更是常用于需要根據(jù)特定條件重復(fù)
    的頭像 發(fā)表于 02-14 16:22 ?2293次閱讀

    如何將光敏電阻連接到Arduino板并讀取電壓

    在本快速入門指南中,您將學(xué)習(xí)如何將光敏電阻連接到Arduino板并讀取電壓。您將首先使用串行監(jiān)視器來了解光傳感器的行為方式,然后構(gòu)建一個(gè)電路,在天黑時(shí)自動(dòng)打開燈。
    的頭像 發(fā)表于 02-11 10:45 ?3386次閱讀
    如何將光敏電阻連接到<b class='flag-5'>Arduino</b>板并讀取電壓

    如何使用Arduino控制RGB LED

    在本指南中,您將學(xué)習(xí)如何使用Arduino控制RGB LED。RGB(紅-綠-藍(lán))LED可以通過混合不同強(qiáng)度的紅、綠、藍(lán)光來產(chǎn)生多種顏色。您將學(xué)習(xí)創(chuàng)建一個(gè)基本Arduino RGB LED電路,并以一些基本顏色為例循環(huán)。
    的頭像 發(fā)表于 02-11 10:28 ?4415次閱讀
    如何使用<b class='flag-5'>Arduino</b>控制RGB LED

    2023年Arduino開放原碼報(bào)告:持續(xù)茁壯的Arduino生態(tài)系!

    所謂出錢就是買一片Arduino開發(fā)板或是付費(fèi)訂閱Arduino Cloud云端服務(wù),或單純資金贊助;出力就是撰寫Arduino相關(guān)的程序并無私的分享程序代碼或回報(bào)錯(cuò)誤或投入翻譯等,筆者即有若干翻譯新版
    的頭像 發(fā)表于 01-25 16:45 ?1276次閱讀
    2023年<b class='flag-5'>Arduino</b>開放原碼報(bào)告:持續(xù)茁壯的<b class='flag-5'>Arduino</b>生態(tài)系!

    Arduino制作循跡小車教程

    Arduino制作循跡小車完全教程
    發(fā)表于 01-05 11:09 ?4次下載

    Arduino的功能及其限制

    Arduino是一種開源電子原型平臺(tái),它基于易于使用的硬件和軟件,可以用于制作各種嵌入式系統(tǒng)。然而,盡管Arduino非常強(qiáng)大,但它也有一些功能上的限制。本文將詳細(xì)介紹Arduino的功能,并探討
    的頭像 發(fā)表于 12-21 14:15 ?1101次閱讀