Arduino的Serial.printf是如何傳送資料至電腦上顯示?

介紹

大家好,今天想跟大家介紹Arduino通訊原理,也就是我們在Arduino上輸入Serial.printf的指令時候,到底如何運作?怎麼把這些資料傳遞到電腦上顯示呢?

我們以下舉例做說明。

範例

假設我們令a=42整數,然後要用Serial.printf把a顯示出來,這時候我們把這段程式燒錄到Arduino中,再打開Serial monitor視窗,就可以看到42的數值一直不斷顯示出來,到底這個數值是怎麼從Arduino傳送到電腦,然後再顯示出來?

原理解析

硬體接線

首先在硬體的部分,我們可以看到Arduino會與電腦利用USB接線,所以數據一定是從Arduino透過USB連接線傳送到電腦。

程式與硬體對應關係

當我們將Arduino程式碼燒錄到Arduino中,這段程式碼就是運作在Arduino板子上,我們以橘色方框顯示Arduino程式運作區域,這時候在板子上會執行Serial.printf的函數,而這段函數,就會將printf裡面的資訊透過USB傳輸到電腦,而電腦會在終端接口部分,有Serial monitor去接收來自Arduino傳遞過來的資訊,也就是數值42,然後再將此數值顯示在螢幕上。

Arduino訊號傳輸原理

我們再進一步觀察Arduino運作的原理,其實Arduino在傳遞數值是透過UART的訊號傳輸,UART有分成TX與RX的訊號,像是要將數值傳遞出來,就會用TX將數值傳輸來,但是這時候因為電腦也沒有UART的接口,現在電腦都是USB接口,所以這時候會需要將UART訊號轉換成USB訊號,才能傳遞到電腦上。

Printf傳輸原理

在Arduino上寫下printf的字體,不管是要顯示數值還是字串,它通通都會轉成字串傳輸,字串就要轉換成是電腦可以理解的訊號進行傳輸,也就是由0,1所組成的訊號。

電腦其實有一套理解字串的方式,也就是ASCII code的編碼,這種編碼可以讓電腦用0,1的方式去理解現在對應的是什麼字串。

像是以42說明,42會先轉換成0100010的編碼,再進行傳輸,透過0,1的訊號,才可以用通訊協定進行訊號傳輸,而傳遞到電腦上,也是0,1構成的編碼,這時候電腦需要做解碼動作,再重新把0,1訊號解碼出來,才會得到數值42的結果,最終才會在Serial monitor上面顯示。

結論

以上就是Arduino printf字串的原理,雖然我們Arduino程式是簡單幾行程式,但實際上在運作是很複雜的運作方式,只是Arduino把這些複雜的部份都解決了,所以才可以得到很簡單直觀方便的使用方式。

Similar Posts