Arduino 编程中的判断和循环
1、Arduino IDE 新建代码的方法,程序的上传方法,大家可以参考:
http://jingyan.baidu.com/article/414eccf6a8fb9f6b431f0ab1.html
来操作

2、使用 if else 进行程序的判断
输入下列代码:
const int led = 13;
const int button = 2;
void setup()
{
pinMode(led,OUTPUT);
pinMode(button,INPUT);
}
void loop()
{
int val = digitalRead(button);
if(val == HIGH)
{
digitalWrite(led,HIGH);
}
else
digitalWrite(led,LOW);
}

3、硬件连接如图所示,效果是在按下按键的时候,Arduino UNO 控制器的 13 号引脚 LED 两起,松开时,LED 熄灭。
代码回顾:if...else
if 连接一个判断条件,而这个条件只有成立与不成立两种情况,当成立时,才会执行 if 内的程式。本例中是判断按键是否被按下,如果按下就执行 if 中的语句,会点亮 LED。

4、使用 while 语句实现重复执行
输入下列代码:
const int led = 13;
const int sensor = 0;
void blink_led()
{
digitalWrite(led,HIGH);
delay(100);
digitalWrite(led,LOW);
delay(100);
}
void setup()
{
Serial.begin(9600);
pinMode(led,OUTPUT);
}
void loop()
{
while(analogRead(sensor) > 500)
{
blink_led();
Serial.print(".");
}
Serial.println(analogRead(sensor));
}

5、硬件连接如图所示,效果是当读取的 A0 接口模拟量大于 500 时,UNO 控制器 数字 13 号引脚所连接的 LED 会闪烁,并且通过串口打印 “.”,当 A0 接口模拟量小于 500 时,UNO 控制器数字 13 号引脚所连接的 LED熄灭,并通过串口打印当前读取的 A0 接口的值
代码回顾:while 后加判断条件,当满足条件时,才会执行 while 内的程序
扩展:do...while...
于while的区别是,do 内的代码至少会被执行一次!而while中的代码不一定被执行


6、使用 for 语句循环
输入下列代码:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("for(int i=0;i<4;i++)");
for(int i=0;i<4;i++)
{
Serial.println(i);
}
}

7、实验无需其他硬件,只需将 UNO 控制器连接到电脑即可。打开串口监视器,会循环打印 i 的值。
代码回顾:for(初始化条件; 判断条件; 反复执行内容)
例如本例中的代码执行顺序为:
(1)初始化 i=0
(2)判断 i<4
(3)成立,就执行 for 内的代码
(4)执行 i++(自加 1)命令
(5)重复执行(2)-(4),直到判断 i 不小于 4 的时候,跳出循环
for 语句的使用方法类似 while,区别在于 for 是可以控制程序开始和结束的条件。

8、使用 break 跳出循环
输入下列代码:
const int led = 13;
const int sensor = 0;
const int button = 2;
void blink_led()
{
digitalWrite(led,HIGH);
delay(100);
digitalWrite(led,LOW);
delay(100);
}
void setup()
{
Serial.begin(9600);
pinMode(led,OUTPUT);
}
void loop()
{
while(analogRead(sensor) > 500)
{
if(digitalRead(button) == HIGH)
{
break;
}
blink_led();
Serial.print(".");
}
Serial.println(analogRead(sensor));
}

9、如图所示连接硬件,按键连接到 D2 接口,电位计连接到 A0 接口,当判断 A0 的值大于 500 时,LED 闪烁;但是在按下按键时,会跳出循环,LED 停止闪烁。


10、switch 语句判断执行
输入下列代码:
const int led = 13;
void setup() {
Serial.begin(9600);
pinMode(led,OUTPUT);
}
void loop() {
if(Serial.available()>0)
{
char ch = Serial.read();
switch(ch)
{
case '1':
blink_led();
break;
case '2':
blink_led();
blink_led();
break;
case '3':
digitalWrite(led,HIGH);
break;
case '4':
digitalWrite(led,LOW);
break;
default:
Serial.print(ch);
break;
}
}
}
void blink_led()
{
digitalWrite(led,HIGH);
delay(200);
digitalWrite(led,LOW);
delay(200);
}

11、实验无需其他硬件,只需将 UNO 控制器连接到电脑即可。打开串口监视器,输入相应的值“1,2,3,4”会对应执行相应的代码,当输入不是这四个数值时,会执行 default 内的代码。
代码回顾:switch...case...
1、switch 会判断串口接收到的值,并且跳到相应的 case 语句执行,case 的条件必须是个数值常数,也可使用字符串,且不可以有相同的值。在每个 case 语句中,如果没有 break 语句,程序就会连续执行。
例如:
case '1':
blink();
case '2':
blink();
blink();
break();
因为 case '1' 中没有 break 语句,所以当成立时,会执行三次 blink() 程序,在遇到 break 时才会跳出 case。
2、default 语句,是在前面所有的 case 语句都没有成立时,才会被执行,如果没有 default 语句,程序在所有 case 都不成立时,程序就不会做出任何处理。
