使用Arduino模擬器測試演算法(一):用Tinkercad搭建Arduino實驗電路並驗證程式邏輯

在原型開發階段,經常會反覆修改軟、硬體;每次修改程式碼,就算只改一個字,Arduino程式仍需重新編譯再上傳測試。如果只想要驗證某個程式語法或演算邏輯,使用模擬器是最省時省力的辦法。

模擬器分成emulator和simulator兩大類,前者可替代原始的裝置,例如RetroArch軟體,可在電腦上模擬遊戲機、執行遊戲軟體,這一類型的模擬器要求即時反應真實機器的狀態,像是模擬遊戲機的畫面要跟實機一樣流暢、按鍵輸入沒有延遲。“emulator”也譯作「仿真器」

Simulator則多用於產品開發和科學研究。例如,一架飛機從控制電路IC設計、引擎材料可靠度、流體力學、機械結構運作、駕駛培訓…每個領域都有不同模擬軟、硬體來輔助和驗證設計。

以工程繪圖、輔助設計製造和3D動畫軟體聞名的Autodesk(歐特克)公司,曾推出模擬電子電路並支援Arduino程式設計的123D Circuits (Circuits.io)網站。歐特克公司於2013年併購了線上3D造型設計軟體公司“Tinkercad”,然後在2017年把123D Circuits當中的“Electronics Lab”(電子實驗室)功能移到Tinkercad網站,circuits.io則更名為“library.io”,提供PCB印刷電路板設計和製造相關業務。

Tinkercad是個免費、簡單易用、直接在網頁瀏覽器中操作的3D造型設計軟體,廣受3D印表機用戶喜愛。加入電子電路和Arduino模擬器(simulator),Tinkercad便能提供創客們在3D機構設計和電路、程式模擬測試的一站式服務。

使用Tinkercad模擬跑馬燈

本單元將使用Tinkercad建立如下的電路(參閱《超圖解Arduino互動設計入門》動手做4-2:LED跑馬燈),執行Arduino程式測試跑馬燈效果:

Arduino跑馬燈麵包板電路

在Tinkercad網站註冊帳號並登入之後,點擊Circuits(電路),再按下「建立新電路」:

Circuits選單

從右邊的「元件」面板,拖放一個小型電路試驗板,並選擇性地替它命名成「麵包板」。

拖放一個麵包板

拖放一個電阻器到麵包板上,電阻值調成330Ω;若畫面太小,不便操作,可滾動滑鼠滾輪縮放畫面。

拖放一個電阻器到麵包板

拖放一個LED到麵包板,正極(凸出的那一面)腳與電阻相連:

拖放一個LED

按一下LED元件,然後按著Shift鍵不放,再按一下電阻,可選取兩個元件。按下Ctrl和C鍵複製,再按下Ctrl和V鍵便能貼上剛剛複製的電阻和LED。重複按下Ctrl和V鍵、調整元件位置,完成如下的麵包板電路:

複製、貼上元件

按一下其中一個LED接地腳底下的插孔,再按一下麵包板「-」排的其中一孔,即可放置一條接地線。若點擊第一個插孔時點錯位置,可按ESC鍵取消接線;若要刪除接線或元件,請點擊它,再按下DEL鍵;按下Ctrl和Z鍵還原前一次操作。

接地線

最終完成的麵包板接線如下,從「元件」面板拖放Arduino板,再點擊工具列左上角的「旋轉」鈕,可旋轉目前選取的元件;按著元件以外的空白地方拖曳,可調整版面位置。

放置Arduino

LED來回跑馬燈的Arduino程式

按一下「程式碼」鈕,從下拉式選單選擇「文字」式程式碼:

程式碼編輯器

在程式碼編輯器中輸入LED跑馬燈程式:

LED跑馬燈程式

完整的程式碼(可直接複製、貼入Tinkercad程式碼編輯器),程式說明請參閱這一則留言

const byte LEDs[] = {8,9,10,11,12};
const byte total = sizeof(LEDs);
int8_t index = 1;
byte i = 0;

void setup() {
  for (byte i=0; i<total; i++) {
    pinMode(LEDs[i], OUTPUT);
    digitalWrite(LEDs[i], LOW);
  }
}

void loop() {
  digitalWrite(LEDs[i], HIGH);
  delay(100);
  digitalWrite(LEDs[i], LOW);

  i += index;
  
  if (i < 0 || i >= total) {
      index *= -1;   // 原本的1變成-1
      i += (index*2);
  }
}

按下「開始模擬」鈕,麵包板電路上的LED將會輪流來回點亮、熄滅。這個模擬器用於驗證電路和Arduino程式,delay()延遲時間可能和真實情況有所出入,但模擬結果驗證了演算法無誤。

Posts created 470

發佈留言

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

Related Posts

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

Back To Top