op.5 與IoT的秘密暗號
對你訴說的情話,我希望只有我們懂
只屬於我們倆的天地
細細傾訴,用暗號表示我對妳的愛......
今天來到了第五天,昨晚在轟炸完成後,難得睡不著覺,於是徹夜改編一首曲子XDD ( 這人有病吧??
今天需要動手寫點東西,就讓我們來看看各個語(暗)法(號)的功用是甚麼吧!
但在那之前,先和各位說個程式碼區塊普遍人都怎麼排吧~
/*
這裡是普遍人宣告、定義、引入標頭檔的地方
*/
// Arduino 主要的設定區塊,可以在這裡設定與初始化,執行的順序優先於loop,沒有特地呼叫只會執行一次
void setup() {
Serial.begin(115200);
}
// Arduino 主要的無窮迴圈,放在這裡就會一直執行
void loop() {
Serial.println("Hello NodeMCU");
delay(1000);
}
/*
這裡是普遍人放置副程式的地方
*/
所以可以了解程式碼基本上會分成3大區塊,那麼先來說說第一個區塊常出現的東西好了。
用來引入函式庫,比如常見的 SPI.h 、 SD.h ,通常在許多比較複雜的感測器上,都會有大神寫成函式庫,大幅降低自己在開發過程的門檻XD (強烈建議還是要讀過Datasheet,並且看過別人的程式碼,確認是否正確等...)
常使用的有 int (整數) 、boolean (布林)、char (字元) 、float (單精浮點數)、String (字串),當然這裡沒有將所有的都列舉出來,詳細的在最後會放上連結供大家可以去補充XD,使用方法如下:
int num = 10; //宣告一個 int 型態,變數名稱為 num ,並且初始化值為 10
boolean LED_State = true; //宣告一個 boolean型態,變數名稱為 LED_State ,並且初始化值為 true
接下來來說說第二個區塊,第二個區塊內必要的函式有 setup() 和 loop() 。
只會在通電或是重置時執行一次,通常使用在設定初始值、設定 pin 的模式等......。
執行完 setup() 函式後,會連續且不斷反覆的執行,為主要需反覆做的事情都會寫在這,比如數據收集。
注意!這兩個無論你是否有用到,這兩個都必須存在於程式碼之中,不然就會編譯不成功。
就像這樣~
最後第三個區塊,用來放置自己寫的副程式,比如今天寫了一個收集溫度的程式,那我便可以像寫 loop() 一樣,寫成一個副程式,供後續維護功能方便,也可以讓程式碼變得可以重複利用。
有的以上概念,我們就來再更進階的深入暗號吧!
點選上方 檔案 > 範例 > 01.Basics > Blink ,開啟最初的程式 Blink。
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Blink
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
可以看到天啊程式好像很複雜,但其實真正有在運作的只有下面短短這幾行
void setup(){
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
其他通通都是註解,註解有兩種,第一種是單行註解,另一種是區段註解,所以在註解內的東西最後編譯時都會被忽略,但是註解的好處可以讓你更快速的了解程式碼,所以隨手註解是一個良好的習慣,尤其當成式碼越來越多時,註解就更重要!
/*
我是區段註解
*/
// 我是單行註解
再來看到setup與loop裡面,出現許多奇怪的暗號,接下來會一一說明。
pinMode() 是用來設置 pin 腳的模式,可設定為輸入或是輸出,並且傳入 pin 腳的值,來指定是設定哪一個腳位。
pinMode(13,OUTPUT); //設定 pin 13為輸出
digitalWrite()會將指定的腳位設定輸出狀態,可以有 HIGH/LOW 兩種選擇。
digitalWrite(13,HIGH); //設定 pin 13為 高態(HIGH)
delay() 顧名思義就是等待,可以給入一個值,單位是毫秒,注意這個等待就是真的等待,NodeMCU會直接自己放假妳給的時間,甚麼都不做,使用時要注意XD。
delay(1000); //等待1000 ms
最後把這段程式碼燒錄進去,應該會看到 NodeMCU 上的LED燈會開始每隔一秒進行閃爍,可以試著更改不同的數值來改變並嘗試。
今天就先到這裡啦,有人一定會想說怎麼沒有其他的,別擔心,之後的實作有用到就會在介紹的,就這樣啦~
星期日愉快!!
就用這首來給今天畫下句點吧 !