[原创]Arduino编程语法
Arduino编程语法
返回上一层
记得几年前我开始学Arduino的时候,发现Arduino编程语法,很多书籍和教程都是不讲的。为什么呢?大家看完这篇贴子也就明白了。
如果你要学习写Arduino程序,不知道它的语法怎么能行呢?
那么,今天我们就来谈谈Arduino的语法,其实我认为语法最重要的东西应该来讲不是很多。基本的了解了,其他查一下资料应该是没有问题的。
大概有主要有两个部分,一个是程序结构,另一个是循环语句,最后多了一点宏和函数
一、程序结构
首先,来说说最基本的程序结构:

现在,我们给程序增加点代码:

1.int ledpin=13;//定义数字接口13
2.void setup()
3.{
4. Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
5. pinMode(ledpin,OUTPUT);//设置数字13 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。
6.}
7.void loop()
8.{
9. digitalWrite(ledpin,HIGH);//点亮数字13 口LED。
10.}

再把程序改改,我想让LED熄灭
1.int ledpin=13;//定义数字接口13
2.void setup()
3.{
4. Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
5. pinMode(ledpin,OUTPUT);//设置数字13 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。
6.}
7.void loop()
8.{
9. digitalWrite(ledpin,LOW);//熄灭数字13 口LED。
10.}

看起来是不是很简单?
Arduino是不是比C语言简单多了。
二、控制语句
不用多说,当然是if else for while switch case等,这些关键字,只要略懂编程应该是没有问题的。
1、先来用一下if

1.int val;//定义变量val
2.void setup()
3.{
4.Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
5.}
6.void loop()
7.{
8.val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
9.if(val == 'r')//判断接收到的指令或字符是否是“r”。
10.{
11.Serial.println("Hello World!");//显示“Hello World!”字符串
12.}
13.}
2、再来用一下if else

1.int val;//定义变量val
2.void setup()
3.{
4.Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
5.}
6.void loop()
7.{
8.val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
9.if(val == 'r')//判断接收到的指令或字符是否是“r”。
10.{
11.Serial.println("Hello World!");//显示字符串
12.}
13.else
14.{
15.Serial.println("Hello boy");//显示字符串
16.}
17.}
For循环

1.int val;//定义变量val
2.void setup()
3.{
4.Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
5.}
6.void loop()
7.{
8.val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
9.if(val == 'r')//判断接收到的指令或字符是否是“r”。
10.{
11.for (int i=0; i <=5; i++)
12.{
13.Serial.println("Hello World!");//显示“Hello World!”字符串
14.delay(10);
15.}
16.}
17.}
接下来switch case

1.int val;//定义变量val
2.void setup()
3.{
4.Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
5.}
6.void loop()
7.{
8.val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
9.switch (val)
10.{
11.case '1':
12.Serial.println("Hello 1");//显示字符串
13.break;
14.case '2':
15.Serial.println("Hello 2");//显示字符串
16.break;
17.case '3':
18.Serial.println("Hello 3");//显示字符串
19.break;
20.default:
21.break;
22.}
23.}
最后一个是while循环

1.int val;//定义变量val
2.void setup()
3.{
4.Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
5.}
6.void loop()
7.{
8.val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
9.while(val=='1')
10.{
11.Serial.println("Hello 1");//显示字符串
12.delay(1000);
13.}
14.
15.}
三、宏和函数
在宏和函数上,我还是非常喜欢的。这样代码写得多的时候,就很方便了。
下面是一个求最小值的宏(宏的名字,我一般会大写)
1.#define MIN(a, b) ((a)<(b)?(a):(b))


1.#define MIN(a, b) ((a)<(b)?(a):(b))
2.int val;
3.void setup()
4.{
5.Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
6.}
7.void loop()
8.{
9.val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
10.while(val=='1')
11.{
12.Serial.println(MIN(1, 3));//显示较小值
13.delay(1000);
14.}
15.
16.}
再来一个求区间的宏
1.#define CONSTRAIN(amt, low, high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))


1.#define CONSTRAIN(amt, low, high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
2.int val;
3.int nRet;
4.void setup()
5.{
6.Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
7.}
8.void loop()
9.{
10.val = Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
11.delay(2000);
12.nRet = CONSTRAIN(val, '1', '10');
13.Serial.println(nRet);//显示较小值
14.
15.}
------------------------------------------------------------------
