Arduino 是一個很適合拿來做作品原形的方案,但是等過了原形這個階段、打算縮小作品的時候,Arduino 的身形就成了阻礙。
通常遇到這種狀況,可以去買 SMD 封裝的微控制器,但是要用人工的方式焊接 SMD 封裝,並不是一件容易事情,往往最後弄得桌面一團亂,卻還是什麼都沒接起來。
SMD 封裝
一般來說,我們平常看到的積體電路都是採取 DIP 封裝,也就是那種兩排直立接腳、長得很像蜘蛛的樣子(下圖中比較大的那種)。
這種封裝方式的晶片方便人工焊接,但它體積就較另一種常見的 SMD 封裝的積體電路(上圖中比較小的)大上許多。
另外一種比較簡單的方式,是用 Attiny45/85 來作為替代品,但它們體積小歸小,就是價格貴了點(一個大約 60~90 元台幣)。最好的方法大概就是用 Attiny13/13A 了;他們不但便宜( 30 元台幣左右)而且規格對小作品來說也堪用了。
硬體規格
在 Attiny13/13A 的體積以及價格都縮減的狀況下,它自然沒辦法像 Arduino UNO 用的 ATmega328P 有那麼多功能,像是 Arduino UNO 有 13 個數位腳位(Digital Pin)、 5 個類比腳位(Analog Pin),而 Attiny13/13A 就只有 2 個數位腳位跟 4 個類比腳位。
設定 Arduino IDE
要上傳 Arduino 程式到 Attiny13 需要的步驟如下:
- 開啟 Arduino IDE
- 打開 File > Preferences
- 輸入以下網址到 Additional Boards Manager URLs:
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
- 打開 Tools > Board > Boards Manager
- 等待更新
- 往下滑直到看到 MicroCore
- 點擊 Install
- 等安裝完畢關閉管理視窗
上傳 Arduino Bootloader
Attiny13/13A 需要 Arduino Bootloader(有點像是作業系統)才能執行 Arduino 程式。要上傳 Bootloader 的話你需要一個 ISP ,例如 USBASP AVR Programmer,不過最簡單的方式還是把 Arduino 當 ISP 來用。
上傳 Arduino 範例程式
接下來就是上傳程式的部分了,試著把下面的原始碼貼進 Arduino IDE 裡,並按下上傳。上傳成功後把一個 LED 的陽極(Anode)接到 Pin 2,然後 LED 的陰極(Cathode)腳接到電阻再接到 Attiny13/13A,再給它提供電力,你應該就會看到 LED 在閃爍了。
void setup()
{
pinMode(3, OUTPUT);
}
void loop()
{
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
delay(1000);
}
進階 Arduino 範例程式
接下來進階一點,我們上傳一個從 potentiometer 讀取電壓值,並用 PWM 的方式調控 LED 的程式。上傳成功後在 Pin 2 接 potentiometer、Pin 5 接 LED 燈;LED 燈應該會隨著你轉動而變亮或者變暗。
#define LED 1
int data;
void setup()
{
pinMode( LED, OUTPUT);
}
void loop()
{
data = analogRead(A3);
analogWrite( LED, data/4);
}
結語
當然,這次這些都只是一些簡單的範例,幫助你開始用 Attiny13,但它的能耐可不只這些;Attiny13/13A 雖然不如 Arduino UNO 的 ATmega328P 強大,但是大部分時候限制你的可還是你打想像