第13章Arduino编程参考
第13章Arduino编程参考
一、最重要的两个函数
在Arduino中, 标准的程序入口main函数在内部被定义, 只需要关心两个函数。
void setup() {
// put your setup code here, to run once:
}
说明:Arduino板起动,setup()函数被调用。初始化变量,引脚模式,使用某个库等。在Arduino板的上电和复位时只运行一次。
void loop() {
// put your main code here, to run repeatedly:
}
说明:用程序改变状态和响应事件,实时控制arduino板,效果连续循环。
二、控制语句
1.if语句
if (x >1)
{
// 加入代码
}
说明:if与比较运算符结合使用,测试是否已达到某种条件。当x大于1,可以执行代码。圆括号中的语句为真,大括号中的语句就会执行。否则,程序将跳过这段代码。
2.if...else语句
if (x < 1)
{
// 执行A
}
else if (x >= 2)
{
// 执行B
}
else
{
// 执行C
}
说明:某个测试条件为真,关联的代码块就会执行,程序将跳到结构的下一行。如果没有测试被验证为真。缺省的else语句块,被设为默认行为,并执行。
3.for语句
结构:for (初始化部分; 条件判断部分; 数据递增部分) {
//语句块
}
举例:for(int x = 1; x < 10; x = x +1){
println(x);
}
说明:x初始化为1;条件判断,x小于10;每循环一次x加1。
- switch case 语句
举例: switch (x) {
case 1:
//当x等于1执行
break;//跳出
case 2:
//当x等于2执行
break;
default:
// 如果没有匹配项,将执行此缺省段
}
说明:根据不同的条件,指定执行的代码,控制程序流。
- while循环语句
举例:
x= 8;
while(x < 19){
x++;
}
说明:while循环持续,直到圆括号()中的表达式变为假。
- do...while循环语句
举例:
do
{
delay(20); // 保证传感器稳定
x = readSensors(); // 读取传感器的值
} while (x < 50); //当x不小于50。
说明:do...while循环,条件在循环的末尾被测试。
- break语句
举例:参考4实例
说明:中止do,跳出循环。
- continue语句
举例:
for (x = 0; x < 10; x ++)
{
if (x > 5 && x < 7){
continue;//创建值跳转
}
digitalWrite(Mpin, x);
delay(8);
}
说明:continue语句只结束本次循环,而不是终止整个循环的执行。
- return语句
举例:
int checkSensor(){
if (analogRead(1) < 100) {
return 0;
else{
return 1;
}
}
说明:终止函数,向被调用函数返回一个值。
10.goto语句
举例:
三、语法
举例:
1.注释:帮助理解程序的创意过程。
形式:
x = 0; //单行注释。
/* 这是多行注释
if (Y> 0){
x = 3;
*/
2.#define 宏定义
格式:#define Hpin 0
在程序编译前,给常量取一个名字。
#include 包含(包含外部的库。)
3.算术运算符
PinVal = analogRead(2); =赋值运算符(单个等号),等号右边的值存储到等号左边的变量中。
加,减,乘,除运算符(关注数据类型的影响)
y = y + 1;
x = x - 1;
i = j * 2;
r = r / 2;
%(取模)(不能用于浮点型数。)
x = 9 % 5; // x的值是4
比较运算符
if(条件) and ==, !=, <, >
举例:
if (x ==10){
digitalWrite(Lpin1, HIGH);
digitalWrite(Lpin1, LOW);
}
如果x与10相等,点亮灯,否则关闭。
布尔运算符 。
x > 0 && y > 0
&& (逻辑与),只有在两个操作数都为真时才返回真。
x > 0 || y > 0
|| (逻辑或),任意一个为真时返回真。
!x
! (非),当操作数为假时返回真。
位运算
按位与(&)两个输入位都是1,结果输出1,否则输出0。
int a = 2; // 00000000000000010
int b = 3; // 00000000000000011
int c = a & b; // 00000000010000010
按位或(|)两个输入位其中一个或都是1按位或将得到1,否则为0。
int a = 2; // 00000000000000010
int b = 3; // 00000000000000011
int c = a | b; // 00000000010000011
按位异或(^),当输入位都为1时它返回0
int a = 2; // 0000000000000010
int b = 3; // 0000000000000011
int c = a ^ b; // 0000000010000001
按位取反(~),翻转其每一位,0变为1,1变为0。
int a = 2; // 00000000000000010
int b = ~ a;//1111111111111101
左移运算(<<)
int a = 1; // 0000000000000001
int b = a << 1; // 0000000000000010
右移运算(>>)
int x = 1000;
int y = x >> 3;
复合运算符
自加++
i++; //相当于 i = i + 1;
自减--
i--; //相当于 i = i - 1;
复合加+=
i+=1; //相当于 i = i + 1;
复合减-=
i-=1; //相当于 i = i - 1;
复合乘*=
i*=2; //相当于 i = i * 2;
复合除/=
i/=2; //相当于 i = i / 2;
复合与&=
i&=2; //相当于 i = i & 2;
复合或|=
i|=2; //相当于 i = i | 2;