Arduino 软件开发(一)
目录
核心运行函数, 基础语法,数字控制,模拟控制
核心运行函数
void setup()
- 当Arduino程序开始运行时会调用setup()函数。
- 通常setup()函数完成初始化一些变量、配置引脚状态及初始化调用的库等。
- 当Arduino控制器通电或复位后,setup()函数会运行一次
void loop()
- 在setup()函数对程序完成了初始化后,loop()函数将会运行。
- loop函数是一个循环体,在Arduino启动后,loop()函数中的程序将会不断运行。
- 通过loop()函数你可以利用你的程序来控制Arduino,完成所需要的功能。
基础语法
-
ariduino的基础语法源自于C/C++语言,因此语法和逻辑与C语言完全相同
-
条件控制语句
- if … (else if) … (else) …
- switch case
-
循环控制语句
- for
- while
- do … while
-
跳转语句
- break
- continue
- return
-
运算符
- 算术运算
- 关系运算
- 逻辑运算(布尔运算)
- 位运算
- 复合运算
-
数据类型
-
void
-
boolean: false, true
-
char / unsigned char
-
byte: (0 ~ 255,digitalWrite范围)
-
byte / word / int / long : (8 / 16 / 32 / 64位整型)
-
float / double
-
数据转换函数
/* x可以是任意数据类型 */ char(x) byte(x) word(x) int(x) long(x) float(x)
-
-
静态前缀
- static 静态数据:在函数内,申明一次后,生命周期一直存在。设置为全局变量则不能被外部函数调用。
- const 常量: 数值不可以被改变,用于保证代码可信,编译验证。
-
易变变量 volatile
-
volatile提醒编译器它后面所定义的变量随时都有可能改变
-
因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。
-
一般说来,volatile用在如下的几个地方:
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。 -
示例: http://www.taichi-maker.com/homepage/reference-index/arduino-code-reference/volatile/
-
-
GPIO的数字控制
-
pinMode()
: 设置管脚模式,-
可设置模式有输入,输入上拉,输出三种模式(与stm32不同,stm32还有中断,下拉电阻等模式)
-
pinMode(GPIOX, INPUT) pinMode(GPIOX, INPUT_PULLUP) pinMode(GPIOX, OUTPUT)
-
-
digitalWrite()
: 设置管脚的数字输出-
当设置为OUTPUT模式时候,可以使用这个函数。
-
可设置的模式有高电平,低电平两种模式
-
digitalWrite(GPIOX, HIGH) digitalWrite(GPIOX, LOW)
-
-
digitalRead()
: 设置管脚的输入-
当设置为INPUT 和 INPUT_PULLUP模式时候,可以使用这个函数。
-
当设置为INPUT模式时候,在电路设计时需要注意是否需要外接上拉电阻。
-
当设置为INPUT_PULLUP模式时候,芯片内部默认自带一个10k的上拉电阻。
-
int val = digitalRead(GPIOX)
-
GPIO的模拟控制(PWM信号)
-
不需要使用pinMode设置管脚模式,默认应该就是模拟输入或输出的模式。
-
但需要注意,只有部分GPIO支持模拟输入或输出模式。
-
analogWrite()
: 设置管脚的模拟输出-
analogWrite(GPIOX, value) // value = 0 ~ 255
-
-
analogRead()
: 设置管脚的模拟输入-
int value = analogRead(GPIOX) // value = 0 ~ 1023
-