在找免費的電路模擬器?123D Circuits 滿足你的願望!

123D CIRCUITS

本服務已轉移至Tinkercad

又快過完一個學期了,是否正在為專題煩惱呢? 或是你正因為學校所教的電子電路課程在家無法實做而感到麻煩嗎? 還是說你是一位剛剛接觸 Arduino 的自造者(Maker),對於自己所創造的東西不會動又找不出原因而感到煩躁?

試試 123D CIRCUITS 吧!這個由 AUTODESK 提供的線上模擬器擁有相當全面的功能,你只需要打開瀏覽器、登入這個網站然後你就可以開始接線路還能在上面寫 Arduino 程式來測試呢!如果你還有印象,之前發表過的 Arduino 教學文章也有用到這個網站。

繼續閱讀 “在找免費的電路模擬器?123D Circuits 滿足你的願望!”

Arduino Basic (6) – AnalogRead 類比輸入

前面幾節講的都是數位的處理,也就是只有 0 和 1 兩種訊號,但我們的世界並不是只有 0 和 1 兩種訊號而已,我們還有更複雜的類比訊號。

諸如電壓、聲音、光亮、溫度等等的,都無法單純的由 0 和 1 構成。

那當我們需要處理這些訊號的時候該怎麼辦呢?

這時候就是 ADC (Analog to Digital Convert, ADC) 出場的時候啦!

繼續閱讀 “Arduino Basic (6) – AnalogRead 類比輸入”

Arduino Basic (5) – PWM 類比輸出

當你想用單晶片控制馬達時,最大的麻煩一定是轉速的控制。一般來說,數位電路只能會送出高態與低態兩種電壓,也就是 Arduino 的正 5V 以及 0V。而這種電壓只能控制馬達轉或不轉,並無法控制轉速。因此我們需要倚靠 PWM 來做控制。

繼續閱讀 “Arduino Basic (5) – PWM 類比輸出”

Arduino Basic (4) – Serial Communication

這一周我們要給各位認識的是 Serial Communication ,也就是串列通訊。

通訊在嵌入式系統中是非常重要的功能,原因除了要與其他設備交換資料之外,還有在 Debug 時所能提供的資料遠比只用 LED 來做 Debug 來得好很多。

當然,更好的 Debug 方式是使用專用的 Debugger 與軟體來做,但在軟硬體較為欠缺的時候,利用預先寫在晶片中的程式輸出一些資訊來了解系統運作是較好的選擇。

繼續閱讀 “Arduino Basic (4) – Serial Communication”

Arduino Basic (3) – Click Click Click

Click Click Click

如果一個單晶片的系統只做 LED 顯示,未免也太單調了些。在這一節中,我們將教你如何讓 Arduino UNO 讀取外部按鍵的狀態,然後變更 LED 的閃爍速度。

事前準備

  • Arduino UNO
  • 麵包板
  • 按鈕 x1
  • LED x5
  • 220歐姆電阻 x5

LED 控制

上一節我們只是讓 LED 在固定的時間內亮起、滅掉,或者是讓一整排的 LED 能夠個別點亮或滅掉,而當你要改變閃爍速度或亮滅順序的時候,你就必須要重新撰寫一次程式碼、編譯然後燒錄到 Arduino 中。

這樣的過程其實一點也不有趣,如果我們能夠靠按下一個或多個按鈕來讓閃爍速度改變或讓 LED 跑馬燈的順序改變,那應該會有去得多對吧?

這一節將告訴你,如何讓 Arduino 能夠讀取按鈕按下的動作,並且讓上述的功能實現!

基本語法

與點亮 LED 時相同,我們必須要在程式中定義腳位資訊,讓 Arduino 知道哪個腳位是做什麼,而因為按鈕是屬於輸入,因此在 setup() 中我們必須加入這行程式碼:

如此一來便能使那個腳位作為輸入來讀取,但這樣還不夠,我們只是使腳位能夠讀取輸入訊號罷了,但在程式中並無法直接讀取,我們必須要用一個變數來接收讀取到的值,如:

如此,當你按下按鈕時,變數 input 便會變成 1(或0,根據電路),有了這個變數,我們便可以在程式中做更多的流程控制。

一鍵開關 LED

是否看過許多用一個按鍵就能開關的電器呢?我們將來實作這一個功能,來幫助你理解這 digitalRead(腳位) 的使用方式。

硬體接線

程式碼

LED 變速閃爍

在這個範例程式中,我們將按鈕的輸入腳位設定在 Arduino UNO 的第 2 隻腳,然後使用板子上的 LED 來顯示我們的結果。

當程式燒錄到 Arduino 後,你會看到 LED 以大約每秒一次的頻率閃爍,這時你可以按下按鈕,應會看到 LED 加速閃爍。

硬體接線

程式碼

改變 LED 跑馬燈方向

還記得上一節的 LED 跑馬燈嗎,現在我們可以靠一個按鈕就讓它改變方向囉!

硬體接線

程式碼

Arduino Basic 相關文章

Arduino Basic (2) – Hello World

Hello World

這部分我們開始進入正式的課程內容,首先從硬體版的 Hello World 開始。

事前準備

  • Arduino UNO
  • 麵包板
  • LED 若干

Arduino UNO

Arduino UNO 是 Arduino 系列中最常被拿來做實驗與開發的板子,它具有便宜、輕便、資源多、模組多等特色,因此非常建議作為 Arduino 的新手入門選擇。

Arduino UNO

核心晶片為 ATmega328p,其細節規格如下表:

項目 規格
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
PWM Digital I/O Pins 6
Analog Input Pins 6
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (ATmega328P)of which 0.5 KB used by bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Clock Speed 16 MHz
Length 68.6 mm
Width 53.4 mm
Weight 25 g

話說我每次看到這規格,都會對那 32KB 的 Flash Memory 大為驚嘆啊!

接下來我們進入這次文章的正題,Hello, World!

點亮 LED

嵌入式系統的 Hello World 通常都是用 LED 來做,這有兩個意義,第一是證明程式能夠執行,第二是測試嵌入式系統的晶片是否正常。看似無聊,涵義卻如此之深的 LED。

程式碼

如果板子上的 LED 不會亮,有可能是你沒燒錄成功,也有可能是板子損毀,但通常都是程式沒燒好或者是燒錄出問題。

LED 閃爍

在這個範例中我們嘗試讓 LED 閃爍起來,大約每秒鐘會閃爍一次。

程式碼

LED 閃爍之二

慢慢地閃看起來很無聊對吧? 我們來點有趣的。如同警示燈一樣,閃兩下便停一段時間,然後再繼續閃。

程式碼

如果你是初次接觸程式語言,看到 for 迴圈不是很了解是什麼的話,你可以參考這篇文章:程式設計迴圈之章,for。

這星期的內容就到此結束,是否覺得只控制一顆 LED 很無聊呢? 下一回我們將控制更多的 LED,嘗試更多的變化。

Arduino Basic (1) – Wiring Framwork

Wiring Framwork

Arduino 所採用的是一個稱作 Wiring 的架構所設計的程式設計流程,他拿掉 main() 這個制式的主程式進入點,改由 setup() 以及 loop() 來取代。

據說這樣可以更容易理解整個程式的運作,並且提高可閱讀性。現在就讓我們一起來看看這是什麼樣的架構吧~

繼續閱讀 “Arduino Basic (1) – Wiring Framwork”

三個非 Arduino 官方整合開發環境讓你當個更快樂的 Maker!

Arduino 是現在頗為流行的一個嵌入式系統開發板,但他官方提供的開發環境實在非常的「簡潔」,實在不是非常好用。除了缺少自動完成以及,還缺少了許多在程式開發上需要的資訊,例如語法檢查、錯誤提示、編譯資訊,最重要的是,官方給的有時還會莫名其妙卡死不動…(新版本似乎已解決卡死問題)

這些問題也有不少人注意到,他們透過自行開發的擴充功能或外掛,讓其他的整合式開發環境也能夠開發 Arduino,大大的加快了程式開發與撰寫的速度,同時也大大提升了爽度(重點)。

接下來要介紹的這些是我實際用過且想要推薦給你參考的三個非官方整合開發環境(IDE),比起官方給的,非官方所提供的功能非常多且完整很多。

繼續閱讀 “三個非 Arduino 官方整合開發環境讓你當個更快樂的 Maker!”