Wokwi:免費的ESP32開發板Arduino, MicroPython線上模擬器(三)

Wokwi模擬器的程式編輯器遠比Arduino IDE 1.x版強大,支援許多現代程式編輯器的功能,例如:指令提示和自動完成功能、上下移動游標所在行(按Alt和「上」或「下」方向鍵)、折疊程式區塊…等。

把游標移到行號後面,程式區塊前面將出現“>”符號,點擊一下,即可收起或展開該區塊:

折疊程式碼

在程式碼編輯器中,按滑鼠右鍵,選擇Command Palette(命令面板)指令,或者按下F1功能鍵,可顯示「命令面板」,列舉所有編輯器的操作命令:

命令面板

可惜的是,Wokwi模擬器環境的ESP32開發板尚未支援模擬下列功能(參閱官方說明文件Simulation Features單元):

  • 藍牙
  • I2S
  • SPI
  • PWM

上傳預先在本機Arduino IDE編譯好的.bin二進位檔並且用模擬器執行它

如果你的Arduino專案沒有用到上述不支援的功能,但是Wokwi模擬器環境沒有你的專案用到的程式庫,沒關係,你可以嘗試先在本機的Arduino IDE編譯程式碼,再將編譯好的.bin檔上傳到Wokwi模擬環境執行看看。

詳細步驟:
1. 在Arduino IDE中開啟你的Arduino程式檔。
2. 選擇「草稿碼→匯出已編譯的二進位檔」指令。

匯出已編譯的二進位檔

編譯完成的.bin檔將位於Arduino程式原始碼所在資料夾。

匯出已編譯的二進位檔

3. 回到Wokwi模擬器的程式編輯器,按下F1功能鍵,在「命令面板」中輸入“load”,點擊其中的“Load HEX File and Start Simulation”(載入HEX檔並開始模擬)命令,

Load HEX File and Start Simulation

4. 選擇剛才編譯的.bin檔。

選取上傳檔

5. 上傳完畢後,模擬器電路將自動啟動執行。

diagram.json檔以及模擬器電路的元件定義

Wokwi模擬器環境採用diagram.json檔來描述模擬電路的版本號、作者以及電路裡面的全部元件和接線。diagram.json檔案的內容格式如下:

{
  "version": 版本數字,
  "author": "作者名稱",
  "editor": "編輯器名稱(wokwi)",
  "parts": [],        // 電路元件的集合(空)
  "connections": []   // 接線的集合(空)
}

其中的“parts”(電路元件)元素包含下列屬性:

  • Id:該元件的唯一識別名稱,如:”led1″。
  • type:元件的類型,如:”wokwi-led”。
  • left:顯示在畫面上的水平(x)座標(單位:像素)
  • top:顯示在畫面上的垂直(y)座標(單位:像素)
  • attrs:元件的屬性,例如:”color”(代表LED的顏色)
  • rotate:元件的旋轉角度,如:90,代表旋轉90度。
  • hide:是否隱藏元件,設定成true代表隱藏。

例如,底下的”parts”屬性代表在模擬電路的座標(100, 50),放置一個紅色的LED元件,其識別名稱為”led1″。

{
  "id": "led1",
  "type": "wokwi-led",
  "left": 100,
  "top": 50,
  "attrs": {
    "color": "red"
  }
}

每當我們在模擬電路編輯器中新增元件時,Wokwi線上編輯器都會自動產生對應的”parts”屬性,並且自動設定識別名稱、座標值…等,所以只要能讀懂“parts”元素的意思即可。

如需查閱Wokwi模擬電路的全部可用元件及其屬性,可瀏覽Storybook頁面,例如,這是紅色LED的屬性

定義元件之間的接線

“connections”定義了電路元件之間的連線,它包含下列元素:

  • 「來源」元件的識別名稱與接腳名稱字串,中間用冒號隔開。假設模擬器畫面有個識別名稱為“esp32”的ESP32開發板,它的接地腳定義成:esp32:GND。
  • 「目標」元件的識別名稱與接腳名稱字串
  • 接線的顏色字串(空白字串代表隱藏的接線)
  • (選擇性的)放置接線的指示(陣列),例如,“v”後面跟著數字,代表垂直(vertical)位移的像素,”v-10”代表垂直往上移動10像素;“h”後面跟著數字,代表水平(horizontal)位移的像素。

例如,底下的”connections”元素定義了從“oled1”的GND腳,連接到“esp”的GND.1腳(註:開發板有多個GND腳),接線顏色是「黑」、接線垂直位移0。

[ "oled1:GND",  "esp:GND.1", "black", [ "v0" ] ]

改變接線的顏色

接線的顏色屬性,可輸入HTML定義的色彩名稱或者16進位色彩代碼。假設要將ESP32開發板的D22腳的接線改成「巧克力」色:

接線顏色

先在diagram.json的“connection”元素裡面,找到“esp32:D22”的接線定義(此例為最後一項),將它的色彩值改成“chocolate”(大小寫無關):

接線顏色

或者“#D2691E”色碼即可:

接線顏色
Posts created 469

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top