• February 28, 2024

【arduino 電腦顯示】亮與暗實習 |Arduino |從Arduino |

鈕特輯系列影片中,我們掌握了硬體軟體搭配使用技巧。今天,我們要介紹一個內建在 Arduino IDE 裡面,功能超人機工具!,我們要打開 Arduino IDE。 IDE 視窗右上角,有一個叫做「序列埠監控視窗」,或稱作「Serial Monitor」按鈕。

  請確定 Arduino 連接電腦上面,而且做好了板子與序列埠設定,你才可以點選這顆鈕,開啟一個炫白色視窗。如果忘記接上 Arduino 下鈕,是會出現錯誤訊息唷!

  這個視窗,其實類似即時通訊軟體,你可以這個白色區域,看到 Arduino 留言你訊息,,你可以上面文字方塊輸入訊息,傳送 Arduino。

  這説起來,我能這個視窗 Arduino 聊天囉?事實上,Arduino 所有對話內容,包含它收到什麼訊息,然後什麼句子來回應你,是要程式當中他們設定才行。我們一個例子:今天我希望 Arduino 啟動時,監控視窗上顯示一行打招呼句子。這個程式要怎麼設計呢?

   setup() 當中,我們要使用指令 Serial.begin(115200); 來開啟 Arduino 電腦之間溝通模式,這個 S 記得使用寫。括號中 115200 是什麼東西呢?它有個專詞,叫做「Baud rate 鮑率」,是一種資料傳輸速率單位。來説,設定 115200,代表 Arduino 電腦之間,每一秒鐘能傳輸 11 萬 5 千 2 百個位元資料。

  接下來,我們要使用指令 Serial.println(),要顯示監控視窗裡文字,透過括號中兩個雙引號包圍起來。這個雙引號用途,告訴 Arduino 這段被包圍句子,是「人類」看句子,所謂「字串(String)」,而不是程式碼一部份。

  然後完成了耶!現在我們程式上傳到 Arduino 當中,然後開啟監控視窗。什麼?怎麼會是一串亂碼呢?

  ,這是因為「鮑率設定」不一致造成結果。你可以 Arduino 電腦,想像成兩個説話人。Arduino 每一秒 11 萬 5 千 2 百個字速度説話,但電腦每一秒鐘聽得到 9 千 6 百個字,它只能收到一大堆沒有意義內容囉!

  要解決這個問題,你只需要監控視窗右下角鮑率,調整成 Serial.begin() 指令中一模 115200,然後左邊選單點選「有行結尾」,防止資料傳送時自動加上換行符號,Arduino 留言訊息能正確地顯示出來了。

  好了,那如果我想讓程式印出第一行句子後,等待一秒鐘,印出第二個句子,我該怎麼修改程式呢?這時候,我們只需要第一個 println() 指令下面,加上一個 1000 毫秒 Delay,然後印出第二個句子就行了。

  ,基本字串顯示,我們可以搭配之前學到宣告技巧 ,讓監控視窗顯示某一個我們預先儲存數字。比如説,我程式開始先宣告一個整數型態 universe,並設定 42。接下來,我印出一段文字:The answer to life, the universe, and everything,然後印出 universe 儲存整數。這樣,我們能直接監控視窗上,看到當初宣告 universe,儲存是 42 這個數字。

  這邊請注意!因為我要印出,是 universe 儲存數字,所以 Serial.println() 括號當中,可以使用雙引號 universe 包起來,不然監控視窗裡印出來東西,會是 universe 這個英文單字,而不是 42 這個數字囉!

  關於排版方面,我們可以美化一下:如果你希望印出來文字不要換行,你可以 Serial.println(),換成 Serial.print() 指令。後,我們印出一個句號。這樣看起來好多了!

  暸解怎麼訊息印監控視窗裡後,緊接著來學習如何監控視窗裡輸入文字,讓 Arduino 你進行互動。比如説,我想製作一個温度轉換器,我輸入了攝氏温度後,Arduino 會幫我運算並回傳對應華氏温度。

  要完成這個專案,我們會用到一個指令,叫做 Serial.available()。這個指令會 if 判斷式 搭配使用,它功能檢查 Arduino 有沒有收到從序列埠監控視窗傳送進來訊息;換句話説,這個放在 loop() 當中 if 判斷式,會地檢查序列埠狀態,我們監控視窗裡輸入文字並下傳送,這個 if 判斷式會成立,然後執行大括號裡工作。

  那大括號裡要做什麼事呢?,我們要宣告一個整數叫作 num;然後使用 Serial.parseInt(); 指令,序列埠輸入文字存進 num 當中。接下來,使用 Serial.print() 輸出一行説文字:“The temperature is:”,然後印出温度轉換結果。

  要攝氏温度轉換華氏温度,我們輸入數字 num 乘上 9、除以 5,加上 32。大多數程式語言當中,數學運算符號有乘除、後加減,左而右特性,所以這行運算式會進行乘法除法運算,然後才是加法運算。後,我們印出温度單位「°F」,整個專案完成了。

若要使用序列埠,要程式架構中,void setup(){}中加入 Serial.begin(鮑率)

鮑率可為9600、38400、57600、115200….,但9600夠快了

但是若要顯示,要使用Serial.print(); 函數 (下表中 x=1 , y=3.1415926 )

Serial.print(” , “);

(此數值0 ~ 5V 解析為 0 ~ 1023,因此讀數會 0 ~ 1023之間)

延伸閱讀…

Arduino #11

CSJH-Maker

Serial.print(” , “);

序列繪圖家可以即時數值大小繪製成折線圖,讓用户個數值關係,但是此折線圖延長,數值會數值踢出窗外。

(1)想要利用序列繪圖家,要想要顯示變數之間逗點隔開 Serial.print(” , “);

(2)讀取腳位,只需要不想顯示腳位分隔逗點前加上” // ”

(3)切記,後一筆資料要換行 Serial.println();

Serial.print(” , “);

Serial.print(” , “);

Serial.print(” , “);

Serial.print(” , “);

延伸閱讀…

【Arduino】Serial 教學,透過電腦與Arduino互相溝通

從Arduino 開發板接收電腦訊息實習

Serial.print(” , “);

開啟序列繪圖家,請工具標籤–>序列繪圖家 進入

取用起見,將程式碼列下方:

Serial.print(” , “);

Serial.print(” , “);

Serial.print(” , “);

Serial.print(” , “);

Serial.print(” , “);

從 Arduino 開發板接收電腦訊息控制 LED 亮暗。 鍵值 0~3 可以控制四個 LED 狀態,LED 狀態會顯示於 Serial Monitor 視窗中。 將 Arduino 開發板電腦連接,然後程式上傳至 Arduino 開發板後,接著開啟 Serial Monitor 視窗,並且傳送欄位中輸入數位 0~3,下傳送鈕字元資料傳送 Arduino 開發板中,來切換 LED 亮、狀態。 如下圖所示,電腦鍵盤輸入 0 時,Serial Monitor 顯示情形,L0 狀態變亮,其中邏輯 1 代表 LED 亮,邏輯 0 代表 LED 。

㈠ 設計 Arduino 程式,從 Arduino 開發板接收電腦訊息控制 LED 閃爍暗。 鍵 0、1、2、3 控制四個 LED 狀態閃爍暗之間變化。

使用 Arduino 開發板接收電腦傳送訊息,並於 Serial Monitor 視窗顯示其 10 進制 ASCII 碼。 將 Arduino 開發板電腦連接,然後程式上傳至 Arduino 開發板,接著開啟 Serial Monitor 視窗。 如下圖所示,傳送欄輸入 “ABCD” 後,下傳送鈕, Serial Monitor 視窗會顯示 A、B、C、D 四個字元 ASCII 碼。

㈠ 設計 Arduino 程式,從 Arduino 開發板接收電腦傳送訊息,並於 Serial Monitor 視窗顯示其 16 進位 ASCII 碼。