【項目2-小組1-任務2】PWM實現(xiàn)變色LED燈(二)—串口輸入輸出的基本方法

PWM實現(xiàn)變色LED燈——串口輸入輸出的基本方法


Arduino串口的使用——與計算機交流

?Arduino與計算機通信最常用的方式就是串口通信

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

串口初始化

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

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

波特率

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

300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200 (單位:bps)

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

串口輸出

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

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

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

使用串口輸出數(shù)據(jù)到計算機

上傳該程序到Arduino Uno,然后可以通過Arduino IDE右上角的 圖標打開串口監(jiān)視器。

注意保證串口監(jiān)視器右下方的波特率和上傳程序中的一致,才能保證正常運行。

串口輸入

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

?調用該語句,每次都會返回一個字節(jié)的數(shù)據(jù),這個返回值便是當前串口讀取到的數(shù)據(jù)。

?上傳以下程序到Arduino:



上傳成功后,運行串口監(jiān)視器,在發(fā)送按鍵左側的文本框中輸入要發(fā)送的信息,如"arduino",你會看到Arduino在輸出了你輸入的信息同時,還輸出了很多亂碼。

這些亂碼是因為串口緩沖區(qū)中沒有可讀數(shù)據(jù)造成的。當緩沖區(qū)中沒有可讀數(shù)據(jù)時,read()函數(shù)會返回int型值-1,而int型-1對應的char型數(shù)據(jù)便是該亂碼。

在使用串口時,Arduino Uno會在SRAM中開辟一段大小為256 bytes的空間,串口接收到的數(shù)據(jù)都會被暫時存放進這個空間中,這個存儲空間,我們稱之為緩沖區(qū)。當你調用Serial.read()語句時,Arduino便會從緩沖區(qū)取出一個字節(jié)的數(shù)據(jù)。

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

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

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

上傳完成后,打開串口監(jiān)視器,鍵入并發(fā)送任意信息。你會看到Arduino輸出了你發(fā)送過去的信息,并且不會再出現(xiàn)亂碼了。


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

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 本文翻譯自 Arduino 串行通訊的官方文檔。 本文的最新版本位于:https://github.com/iwh...
    import_hello閱讀 4,277評論 0 7
  • 大家好!這是小編第二次做小項目~ 小編目前專業(yè)是電氣自動化的,不搞點硬件方面的東西,不學點控制技術...
    世緣閱讀 11,242評論 4 15
  • 在很多時候,Arduino需要和其他設備相互通訊,而最常見最簡單的方式就是串口通訊。本篇介紹Arduino硬件串口...
    TonyCode閱讀 104,326評論 1 15
  • 折騰了許久 感覺有些疲憊 或許曾經(jīng) 盡可能將力所能及的事都往身上攬 因為有太多的放不下 以前曾看到一個故事 小僧喜...
    雁楠秋閱讀 385評論 0 2
  • 文/鳳城抗靶子 父親已是耄耋翁 ,腿腳利索腦瓜靈。 江南古鎮(zhèn)走一遭,一路賞景悅心情。 兒子開車興沖沖,后排坐著白發(fā)...
    許文曉閱讀 292評論 0 0

友情鏈接更多精彩內(nèi)容