2016年3月20日 星期日

Arduino Nano 控制LED blinking閃爍

前言:

最近剛入手一片Arduino Nano v3, 在購物網上查詢到一片約NT$85 (還蠻便宜的),但套件排針只附上主模組與排針 x3,所以必須自行將排針都焊上後才可以進行測試,當然是市面上也有已經將排針焊上了的版本,如果你想用比較低的價格購入,也想練習順便練習一下soldering技巧,那就可以買這樣的套件來使用。


事前工作:

我把使用的工具與料件列出如下:
1. 烙鐵 x1
(我使用的功率較低USB烙鐵 8W,因為可以portable所以方便隨時可以拿出來使用,不過因為功率較低溫度沒有一般40W~60W烙鐵高,不過焊些簡易東西沒什麼問題)

2.  焊台 x1
(建議找一個便宜的焊台,我只花了N$180買了一個,因為之前的經驗是,還有沒有焊台輔助真的很難進行焊接工作,原因是焊接誤會滑動,真的很難進行)

3. 焊錫 & solder paste
4. Arduino Nano v3 主板 x1 pcs + 排針x 3 pcs (買來的套件)

焊接工作:
透過焊台輔助,將3個排針依序焊上,最後完工如下圖所示,長排針方向如果是想插入麵包板,一般在和結時是將排針長的一端面向下,我的例子是排針長的一端是向上,這個看個人喜好了。

利用焊台夾住被焊接主板
焊接完成的成品



使用元件:
紅色LED x1 3mm (1.8~2.2VDC)
電阻 220 Ohm  1/4W x1
單心線或杜邦線  數條
Arduino Nano開發板


接線:

LED的工作電壓與電流:
  • 1.8-2.2VDC 順向壓降
  • 最大電流: 20mA
  • 建議工作電流: 16-18mA
首先,用歐姆定律估算一下LED限流電阻大小,我們使用D13 pin腳做LED on/off,on 時為輸出5V , off輸出為0V,根據ohm law估算 => (5V-1.8V)/16mA = 200 Ohm , 可以選用接近的阻值 220Ohm電阻,如果選用大一點的阻值LED就會變得比較暗。

線路接法,D13 腳位接到R1,在連接到LED的(+)正極,LED的(-)負極接到GND。如圖所示

接線圖


接下來打開Arduino IDE, 就是將範例sketch程式檔 (附檔名 *.ino)  download到nano開發板上。

Step1: 將USB cable 一端接到電腦端的USB接口,另一端接到Nano的USB接口
第一次將Nano接上電腦時,Windows作業系統會自動安裝對應的USB-Serial driver (我的系統偵測到CH340  USB-serial driver (COM11),COM port不一定是11,請查一下裝置管理員記下COM 的數字。
COM port位置



Step2: 打開Arduino IDE (最新版v1.6.8 download), Tools -> board 選擇Arduino Nano; Port選擇COM11 (請按自己電腦設定)

Arduino IDE設定
Step3. 將下面範例程式做編譯,在IDE的上面選單 Sketch -> Upload,然後上傳到Nano開發板,如果編譯沒有error,程式可以正常執行。


程式碼:
#define Led_pin 13
String str("");
long num;

void setup()
{
Serial.begin(9600);
Serial.println("nano ready...");
pinMode(Led_pin , OUTPUT );
}

void loop()
{
if(Serial.available())
{
str = Serial.readString();
num = str.toInt();
Serial.print("blink time (msec) = "); Serial.println(num);
delay(100);
}
if(num >0 ) Blink(num);
}
void Blink(unsigned int tt)
{
digitalWrite(Led_pin, HIGH );
delay(tt);
digitalWrite(Led_pin, LOW );
delay(tt);
}

測試結果:

Step4. 程式執行後,打開Tools -> Serial Monitor (右下角記得Baud rate要設定在9600) ,因為我們程式中設定以9600bps速度做序列傳送資料,否則看不到輸出資料。

可以在serial monitor上輸入MircoSec,控制LED 閃動的間隔。你可以自己測試不同的時間間隔,觀察LED blink的情況。








沒有留言:

張貼留言