[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)

欢迎交流

好了,今天这篇只是替昨天那篇做个程序码讲解,毕竟昨天介绍许多步骤,像是安装驱动、设置开发板资料包...等等步骤,虽然还有许多功能可以介绍但在写下去又不知道文章要变多长了,所以改天有机会在接续把之前没补充到的写完吧,顺带一提下周就要开学了,超长暑假别走啊~ 那各位明天再会罗。


<<:  前导:乱聊

>>:  羊肉炉吃到饱

Material UI in React [ Day 30 ] 总结

今天是参赛的最後一天,至此已经讲解完侧边栏位的内容了,之後会再整理每一章节的范例在 code sen...

进击的软件工程师之路-软件战斗营 第二周

学习进度 第一周的练习小考与检讨 课後练习与习题检讨 继承、多型与介面 继承(extends)原则与...

控制反转与依赖注入(二)

今天讲的是控制反转与依赖注入(二) 控制反转与依赖注入 ...

18. STM32-CAN-BUS (上)

前几篇有介绍过CANBus~透过MCP2515模块去完成通讯。 这篇会使用STM32当中的CAN-B...

Azure CLI 本质 Restful API

为何 Azure CLI / SDK / Portal / PowerShell 的行为可以一致,背...