iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
自我挑戰組

Maker making IoT !!系列 第 6

[Day5] 函式(數)介紹

1.前言

今天來講講函式(不是韓式料理的韓式),而是Coding時會用到的程式方法(你到底在講啥?),這部分內容對於沒有寫過Code的人來說可能會稍難理解一點,不過我們會一步步跟各位說明,希望對於部分沒有資訊背景的人有所幫助。廢話不多說趕緊進入今天的課程~


2.函式說明

寫過程式的人一定都知道,一個好的編程就是把所有有可能重複使用的Code寫成一個個函式(function),這樣我們就不用每次用到時都要再重新撰寫一次程式代碼,只需邀呼叫function即可復現功能。豈不美哉~

沒有程式底子也沒關係至少也都會聽到有人說函式跟函數等等詞彙,但其實都是在講同一個東西(以下我統一講函式),也就是我執行這個函式,它可以幫我完成甚麼事情,例如:a=5,b=10,當我經過一個add的函式時會幫我把兩者的數值相加,那我們現在套用在程式碼上。(其中的add函式只是假設會幫我把2個變數加起來)

int a = 5;    //定義a變數為整數,且a的值為5
int b = 10;   //定義b變數為整數,且b的值為10

int c = add(a,b);    //定義c的變數為整數,且c的值為add(a,b)

那請問c現在的值為多少? 答案:c=15 (這不是在汙辱我的智商吧?!)
經過上面的小範例是否有了解一些了呢?簡單說就是我不用在把c=a+b這句話寫出來,而是透過函式就直接運算完畢回傳給c。
可能透過這樣難以理解,畢竟c=a+b也才一行,那假設我今天用1000行打出霹靂炫砲的超強計算機,那你會希望你的程式碼多了1000行還是像現在這樣1行就可以解決?換句話說我透過函式也可以大幅提升程式碼的整齊度及複雜度。


3.範例程式碼(Blink)

在Blink程式碼中所使用到的分別為以下函式。

//腳位模式
pinMode()

//數位輸出
digitalWrite()

//延遲
delay()

3-1.腳位模式

//pin 為先前在ESP32s那篇有介紹過(忘記得可以回去看優~),而此地方則是要設置腳位在哪裡。例如:13、12、11
//mode 分為設置INPUT或OUTPUT,INPUT表示該腳位模式設置為輸入(讀取資料),OUTPUT表示該腳位模式設置為輸出(輸出高低電位)
pinMode(pin,mode)

3-2.數位輸出

//pin 為先前pinMode所定義的腳位。
//value 分為設置HIGH(1)或LOW(0),HIGH為輸出訊號為1,LOW為輸出訊號為0
//value的設置如同電燈開關,當我電燈開關往上撥為1(電燈亮),往下撥為0(電燈暗)。
digitalWrite(pin, value)

3-3.延遲

//ms 為毫秒(milliseconds),所以當我ms設置為5000時,就是暫停程序5秒。
delay(ms)

4.範例外內容

竟然上面有提到輸入、輸出、延遲,那就多介紹這幾個相似的函式

4-1.數位輸入

//pin 為先前pinMode所定義的腳位。
//這邊所會接受到值為HIGH(1)或LOW(0),並不會像類比一樣會有浮動不定的數值。
digitalRead(pin)

4-2.類比輸出

//pin 為先前pinMode所定義的腳位。
//value 類比輸出能輸出0-255之間的訊號,像調色盤一樣。
analogWrite(pin,value)

4-3.類比輸入

//pin 為先前pinMode所定義的腳位。
//根據開發板的不同而數值會有所出入,而ESP32s2為0-4095,0為最小,4095為最大
analogRead(pin)

4-4.延遲微秒

//us 為微秒(microseconds),所以當我us設置為10000時,就是暫停程序10毫秒。
delaymicroseconds(us)

歡迎交流

好了,今天這篇只是替昨天那篇做個程式碼講解,畢竟昨天介紹許多步驟,像是安裝驅動、設置開發板資料包...等等步驟,雖然還有許多功能可以介紹但在寫下去又不知道文章要變多長了,所以改天有機會在接續把之前沒補充到的寫完吧,順帶一提下週就要開學了,超長暑假別走啊~ 那各位明天再會囉。


上一篇
[Day4] Arduino測試燒錄
下一篇
[Day6] 呼吸燈製作
系列文
Maker making IoT !!30

尚未有邦友留言

立即登入留言