01.LED 模組
上一節,我們學會了如何輸出「hello world」。現在要看看如何點亮LED模組。正如我們所知,一個系統由三個基本模組組成:輸入、控制和輸出。此範例只會用到一個輸出模組(LED),而後有輸入模組。
Seeeduino是控制模組,LED是輸出模組,而它的輸出訊號為數位訊號。
背景知識
什麼是數位訊號?
數位訊號:數位訊號代表不同大小的數值之間是不連續的,且是在一個有限的範圍之內。Arduino的數位訊號具有兩個狀態:LOW(0V)為0; HIGH(5V)為1。因此向LED發送【HIGH】訊號可以讓它亮起來;發送【LOW】訊號則是讓LED熄滅。
使用模組
1.Seeeduino開發板
2.LED模組
3.訊號線(僅適用於模組已拆開的情況)
硬體連接
模組連接
① 預設以電路板上的線路連接到Seeeduino。
②透過USB傳輸線將Seeeduino連接到電腦。
程式碼
①打開 Arduino IDE。
②輸入以下程式碼,按一下【驗證()】來檢查有無語法錯誤,如果沒有出現錯誤訊息,就可以按【上傳()】把程式碼上傳到開發板。
//LED Blink
//The LED will turn on for one second and then turn off for one second
int ledPin = 4;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
程式碼分析
//LED Blink
//The LED will turn on for one second and then turn off for one second
這兩行是註解,//之後的內容不會被編譯為執行命令。
在 Arduino 程式碼中,只要是接在 // 符號之後的內容都會被 Arduino 編譯器跳過而不會進行編譯(不然程式就出錯啦)。那為什麼要在程式中加入一些會被跳過的說明呢?您可以在變數、函式或是一段較長的程式碼開頭使用註解,並在其中說明用途,這樣可以讓您的程式碼更容易看得懂。註解內容可以寫中文字,但有可能會因為不同的編輯環境導致開起來變成亂碼。
另一方面,您可以用註解來停用某一段程式,這樣就能做到分段檢查的效果。Arduino 的註解方式與絕大多數的程式語言相同,分為單行註解與多行註解,以下是不同的註解方式:
單行註解:
//註解1
//註解2
多行註解:
/*
這裡
被包起來的
很多行
都會被視為註解
整段包起來很方便
*/
但這樣是不行的!!
/*
我會被 Arduino 當作是程式碼,編譯錯誤
別擔心,Arduino 環境會把註解內容變成淺灰色,仔細看看喔!
程式碼是給機器看的,為了讓讀這份程式碼的人類也能了解它的功能,在程式碼中加入註解是重要的習慣。雖然目前程式碼都不長,結構也很單純,但是,隨著您能力的成長,程式碼會越來越龐大,還有可能要跟其他夥伴一起寫程式,而您的大作更可能被後世所景仰,為了幫助未來的自己、夥伴與後繼者,充分了解您創作的初心,請務必寫下清楚的註解。
setup(){
}
專案開始時以setup()函式來初始化變數、腳位模式和啟動程式庫等。setup()函式只會在每次Arduino開發板通電時或按下Reset按鈕後執行一次。
loop(){
}
新增一個用於初始化和設定初始值的setup()函式之後,loop() 函式正如其名,會不斷執行它裡面的內容,並允許程式進行更改與回應。loop() 函式是用來主動控制Arduino開發板。
某腳位設定為 INPUT 模式之後,則可透過 digitalWrite() 函式來啟用 (HIGH) 或 停用 (LOW) 該腳位之內部上拉電阻,建議將pinMode()設定為INPUT_PULLUP以啟用內部上拉電阻。更多資訊請參考: https://www.arduino.cc/en/Tutorial/InputPullupSerial。
如果不將pinMode()設定為OUTPUT就把LED連接到腳位的話,則在呼叫digitalWrite(HIGH)時,會因為未明確設定pinMode(),digitalWrite()將啟用內部上拉電阻作用為限流電阻LED,這樣可能不會亮。
語法:
digitalWrite(pin, value)
參數:
pin(腳位):Arduino的腳位。
value(值):HIGH 或 LOW 。
digitalWrite(ledPin, LOW);
〈參照P17〉當 ledPin 被設定為輸出時,LOW 代表向該腳位發 送低電位,LED 熄滅。
delay(1000);
將程式延遲1000ms(1秒)。
描述:
暫停程式一段指定的時間長度(以毫秒為單位)。
*每秒有1000毫秒。
語法:
delay(ms)
參數:
ms:暫停的毫秒數。
允許的資料型態:正整數(unsigned long)
展示效果和序列埠輸出結果
LED模組將亮1秒,燈滅1秒。
拆解指南
如果模組已從主電路板拆下來的話,則需要使用訊號線將 LED模組接到Seeeduino的數位連接埠D4。
試試看
◎改變LED模組閃爍的快慢吧!