这篇呢主要还是介绍判断及回圈,但是说实话上一篇讲到的for跟if就可以应付很多状况了,但另外这些也需要好好介绍一下,因为各有优缺点,那废话不多说就开始罗。
while在Arduino程序撰写中扮演一名相当重要角色,很多时候需要不断进行监控的动作都需要使用它,例如我可以使用
while回圈去侦测按钮是否被按下,就让LED灯重复闪烁,而while还有分为前侦测跟後侦测,或者在while里面塞true也可以,而如果看到while先就代表这是前侦测,而如果先看到do後面又接个while代表这是後侦测(晚点说明),那这边须注意一下while的回圈不像for一样,for会自己计算次数,而while不会,看过范例会更懂一点。
while(condition){
//执行内容
}
condition 条件式,将想比对的值放入比较,就可为条件式,范例:a==b,这个就是条件式。
int a = 1;
int b = 10;
while(a!=b){
//无穷回圈,因为a不会自己递增
}
while(a!=b){
a++; //不会造成无穷回圈,因为a会递增上去,直到a=10与b相符,就离开回圈
}
//当按钮按下则让LED闪烁一下
while(digitalRead(button)==HIGH){
digital.Write(LEDPin,HIGH);
delay(1000);
digital.Write(LEDPin,LOW);
delay(1000);
}
※此都只为介绍,如程序码无法执行为正常现象
do while为後侦测,而此会在跑第一次回圈时,就先进入,因为没侦测挡住,直到回圈内程序跑完後遇到while才侦测,那do while也和while相同,不会自动记次数,所以要记住不要忘记添加记次数而导致无穷回圈。
do{
//执行内容
}while(condition)
condition 条件式,将想比对的值放入比较,就可为条件式,范例:a==b,这个就是条件式。
int a = 0;
int b = 10;
do{
a++; //1 2 3 4 5 6 7 8 9 10
}while(a!=b);
像是do while的写法,可以适合用在注册系统或是格式有没有符合...等的情况中,就是先让使用者输入在侦测,如输入格式有误就可以自动重新输入了,不必多写好几次。
switch就像使用了if、else if、else的判断,直接看例子吧。
switch(var){
case label1:
//执行内容1
case label2:
//执行内容2
default:
//默认执行内容
}
var 变数,可以填入处理完後的变数。
lable1、label2 放入处理完後可能答案。
int a = 10;
int b = a + 20;
switch(b){
case 30:
//code...;
break; //跳出switch判断
case 20:
//code...;
break;
case 10:
//code...;
break;
default:
//当b与上面case都没不符合则会进default,default类似if中的else脚色
}
上方为switch范例,而各位都会有些许疑问,为甚麽case里面都要在最下方增加break,而这边加一下,当执行到break这个指令就会跳出该层地方,如该层回圈或该层判断,如上面范例就是跳出该次switch判断,而break要写在最下面是因为,如果我写在前面那我执行到break时,就会跳出该次执行了,而且break下方指令也不会被执行到,向下方程序码,case 30进入後就执行到break,假如break下面是有程序,那那些程序都不会被执行到(正常来说编译时会出错)。
switch(20){
case 30:
break;
//code...
case 20:
break;
//code...
}
在写switch要注意case後面是:而不是;,且break一定要加,因为如果没加就会变成很好玩的一件事。
switch(20){
case 30:
Serial.println("20");
case 20:
Serial.println("80");
}
执行完後会变成
20
80
所以如果没加break会直直跑下去,直到switch跑完,一路从北向南跑,十分通顺0u0b。
这几天有仔细看范例的小夥伴,应该都会看到范例中有许多i++,i- -,i+=2,那我这边要稍微解释一下这是什麽意思。
i++;//i+1
i--;//i-1
+1-1十分简单,那这只能+1-1,那如果我要+2呢
i+=2;//i=i+2
i-=2;//i=i-2
+2-2以上都是这种方法,乘法、除法及取余数呢?
i*=2;i=i*2
i/=2;i=i/2
i%=2;i=i%2
那精简写法就这样,那判断中的条件式也可以含括多种条件,那介绍之前,我先稍微讲一下||、&&,那这两种符号,分别是或、及,那这两种的记法,我都是记 当a"或"b何者为1则输出为1,当a"及"b为1则输出为1,那看到这里应该会有一些人很眼熟,没错这就是数位逻辑中的OR Gate(闸)、AND Gate(闸),范例到~~。
if(a==10 || b!=30 || c>=70)
if(a<=20 && c>=30 || b<a)
好了,终於花了这几天把前面忘了交代的Coding注意与常用的条件判断、回圈...跟大家科普完毕了。希望大家看完这三篇能对回圈、判断及各个基本观念有概念,下一篇将会进入到我们主要的ST01扩充板介绍,我们根据自己使用的经验觉得这块板子相当适合用在教学上面,希望大家接下来跟着我们一起接触ST01後也会喜欢它,那下一篇再会~
这两年看过不少应徵工程师职缺的履历,会描述当过 Scrum Master 经历。在面试中,我如果针对...
前言 随着网路逐渐普及,越来越多人选择'网购',而网购中最後结帐的部分极为重要。 今天要来讲讲:离线...
今天就来使用TIUP布建TIDB看看吧,因为我环境会如同之前一样使用GCP,所以今天也一样会透过te...
今天是铁人赛最後一天 我把之前所整理的资料来源一并附上 有些功能其实已经想好大概怎麽实现了,但在30...
11 近似最短路径 前面介绍的所有点对最短路径演算法,好写的得花 n^3 的时间、比较快的又得仰赖矩...