Arduino开发必备的编程知识
1. 结构 (Structure)
在Arduino程序中,结构指的是程序的整体框架,包括程序的起始点和主要执行部分。
setup():
setup()
函数是Arduino程序的初始化部分,程序开始运行时会首先执行该函数。通常在这里进行一次性的初始化设置,例如配置引脚模式、初始化变量等。loop():
loop()
函数是Arduino程序的主要执行部分,它会被无限循环执行,直到设备关闭或重新启动。在这个函数中,可以编写程序的主要逻辑,处理传感器数据、控制执行器等。
2. 控制结构 (Control Structures)
控制结构用于控制程序的执行流程,根据条件执行不同的代码块,或者根据循环次数执行代码块。
if:
if
语句用于根据条件执行代码块,如果条件为真,则执行if后的代码块。if...else:
if...else
语句用于在条件为真时执行一个代码块,否则执行另一个代码块。for:
for
循环语句用于重复执行一段代码,通常用于已知循环次数的情况。switch case:
switch case
语句用于根据表达式的值执行不同的代码块,可以替代多个if...else语句。while:
while
循环语句用于在条件为真时重复执行一个代码块。do... while:
do... while
循环语句会先执行一次代码块,然后在条件为真时重复执行。break:
break
语句用于终止循环或switch语句的执行。continue:
continue
语句用于跳过循环中的当前迭代,继续下一次迭代。return:
return
语句用于从函数中返回一个值,并终止函数的执行。goto:
goto
语句用于无条件地转移到程序中的标签处。
3. 进一步的语法 (Further Syntax)
这一部分包括一些程序中常用的语法元素,例如分号、大括号、注释、预处理指令等。
; (分号):
分号用于标记语句的结束。
{} (大括号):
大括号用于组合多个语句,形成一个代码块。
// (单行注释):
双斜线用于在一行代码后添加注释,注释内容在双斜线后。
/ / (多行注释):
/* */
用于添加多行注释,注释内容在注释符号之间。#define:
#define
预处理指令用于定义一个宏。#include:
#include
预处理指令用于包含另一个文件的内容。
4. 算术运算符 (Arithmetic Operators)
算术运算符用于执行基本的数学运算,例如加法、减法、乘法和除法。
= (赋值运算符):
将右边表达式的值赋给左边的变量。
+ (加法):
将两个数相加。
- (减法):
从第一个数中减去第二个数。
* (乘法):
将两个数相乘。
/ (除法):
将第一个数除以第二个数。
% (取模):
返回第一个数除以第二个数的余数。
5. 比较运算符 (Comparison Operators)
比较运算符用于比较两个值之间的关系,并返回布尔值(true或false)。
== (等于):
如果两个值相等,则返回true;否则返回false。
!= (不等于):
如果两个值不相等,则返回true;否则返回false。
< (小于):
如果第一个值小于第二个值,则返回true;否则返回false。
> (大于):
如果第一个值大于第二个值,则返回true;否则返回false。
<= (小于等于):
如果第一个值小于或等于第二个值,则返回true;否则返回false。
>= (大于等于):
如果第一个值大于或等于第二个值,则返回true;否则返回false。
6. 布尔运算符 (Boolean Operators)
布尔运算符用于对布尔值进行逻辑运算。
&& (逻辑与):
如果两个条件都为true,则返回true;否则返回false。
|| (逻辑或):
如果两个条件中有一个为true,则返回true;否则返回false。
! (逻辑非):
将布尔值取反,如果原始值为true,则返回false;如果原始值为false,则返回true。
7. 指针访问运算符 (Pointer Access Operators)
指针访问运算符用于操作指针变量。
* (解引用运算符):
返回指针所指向地址的值。
& (取地址运算符):
返回变量的地址。
8. 位运算符 (Bitwise Operators)
位运算符用于对二进制位进行操作。
& (按位与):
如果两个位都为1,则返回1;否则返回0。
| (按位或):
如果两个位中有一个为1,则返回1;否则返回0。
^ (按位异或):
如果两个位不相同,则返回1;否则返回0。
~ (按位取反):
对操作数的每个位取反。
<< (左移位):
将操作数的所有位向左移动指定的位数。
>> (右移位):
将操作数的所有位向右移动指定的位数。
9. 复合赋值运算符 (Compound Operators)
复合赋值运算符结合了赋值运算符和算术运算符,用于简化代码并提高效率。
++ (自增运算符):
将变量的值增加1。
-- (自减运算符):
将变量的值减少1。
+= (加等于):
将右侧的值加到左侧的变量上,并将结果赋给左侧的变量。
-= (减等于):
将右侧的值从左侧的变量中减去,并将结果赋给左侧的变量。
*= (乘等于):
将左侧的变量乘以右侧的值,并将结果赋给左侧的变量。
/= (除等于):
将左侧的变量除以右侧的值,并将结果赋给左侧的变量。
&= (按位与等于):
对左侧的变量和右侧的值执行按位与操作,并将结果赋给左侧的变量。
|= (按位或等于):
对左侧的变量和右侧的值执行按位或操作,并将结果赋给左侧的变量。
10. 变量 (Variables)
变量用于存储和操作数据,在程序执行过程中可以被赋予不同的值。
11. 常量 (Constants)
常量是固定不变的值,在程序中使用时不能被修改。
12. 数据类型 (Data Types)
数据类型定义了变量或常量可以存储的数据类型和范围。
void:
表示无返回值的数据类型。
boolean:
表示布尔值,只能是true或false。
char:
表示一个字符,占用一个字节的内存空间。
unsigned char:
表示无符号字符,范围为0到255。
byte:
与unsigned char相同,表示一个字节的数据。
int:
表示整数,占用两个字节的内存空间。
unsigned int:
表示无符号整数,范围为0到65535。
word:
与unsigned int相同,表示一个字的数据。
long:
表示长整数,占用四个字节的内存空间。
unsigned long:
表示无符号长整数,范围为0到4294967295。
float:
表示单精度浮点数,占用四个字节的内存空间。
double:
表示双精度浮点数,占用八个字节的内存空间。
string - char array:
表示字符串,由字符数组组成。
String - object:
表示字符串,是Arduino提供的字符串对象。
array:
表示数组,用于存储多个相同类型的数据。
13. 转换 (Conversion)
转换函数用于将一个数据类型转换为另一个数据类型。
14. 变量作用域和限定符 (Variable Scope & Qualifiers)
变量作用域指的是变量在程序中的可见性范围,限定符用于改变变量的默认行为。
15. 实用函数 (Utilities)
实用函数用于执行常见的任务,例如获取变量的大小。
16. 函数 (Functions)
函数是用于执行特定任务的独立代码块,可以被调用和重复使用。
17. 数字输入/输出 (Digital I/O)
数字输入/输出函数用于控制Arduino板上的数字引脚,实现数字信号的输入和输出。
pinMode():
用于设置特定引脚的模式,可以是输入(INPUT)或输出(OUTPUT)。
digitalWrite():
用于向特定引脚写入数字值,可以是HIGH(高电平,即5V或3.3V)或LOW(低电平,即0V或接地)。
digitalRead():
用于读取特定引脚的数字值,返回HIGH或LOW。
18. 模拟输入/输出 (Analog I/O)
模拟输入/输出函数用于处理Arduino板上的模拟引脚,实现模拟信号的输入和输出。
analogReference():
用于设置模拟输入引脚的参考电压,默认为DEFAULT(一般是5V或3.3V)。
analogRead():
用于读取模拟输入引脚的模拟值,返回一个介于0到1023之间的整数,表示0V到参考电压之间的比例。
analogWrite():
用于向特定引脚写入模拟值,实现PWM(脉冲宽度调制)输出,可以产生模拟电压。
19. 高级输入/输出 (Advanced I/O)
高级输入/输出函数提供了一些特殊功能,如声音发生器和移位寄存器等。
tone():
用于在特定引脚产生特定频率的方波声音。
noTone():
用于停止之前通过tone()函数产生的声音。
shiftOut():
用于向外部设备(如74HC595移位寄存器)串行发送数据。
shiftIn():
用于从外部设备(如74HC165移位寄存器)串行接收数据。
pulseIn():
用于测量脉冲的持续时间。
20. 时间 (Time)
时间函数用于获取和管理时间信息。
millis():
返回自Arduino板启动以来经过的毫秒数。
micros():
返回自Arduino板启动以来经过的微秒数。
delay():
使程序暂停指定的毫秒数。
delayMicroseconds():
使程序暂停指定的微秒数。
21. 数学 (Math)
数学函数用于执行常见的数学运算。
min():
返回两个值中较小的那个。
max():
返回两个值中较大的那个。
abs():
返回一个数的绝对值。
constrain():
用于限制一个值的范围在指定的最小值和最大值之间。
map():
将一个值从一个范围映射到另一个范围。
pow():
返回一个数的指定次幂。
sqrt():
返回一个数的平方根。
22. 三角函数 (Trigonometry)
三角函数用于处理角度和三角形相关的计算。
sin():
返回给定角度的正弦值。
cos():
返回给定角度的余弦值。
tan():
返回给定角度的正切值。
23. 随机数 (Random Numbers)
随机数函数用于生成随机数。
randomSeed():
用于设置随机数生成器的种子。
random():
返回一个介于0和指定最大值之间的随机整数。
24. 位和字节操作 (Bits and Bytes)
位和字节操作函数用于处理二进制位和字节。
lowByte():
返回一个16位整数的低字节。
highByte():
返回一个16位整数的高字节。
bitRead():
读取一个字节中特定位的值。
bitWrite():
设置一个字节中特定位的值。
bitSet():
将一个字节中特定位设置为1。
bitClear():
将一个字节中特定位清零。
bit():
返回一个指定位的值。
25. 外部中断 (External Interrupts)
外部中断函数用于处理外部引脚的中断事件。
attachInterrupt():
将一个中断服务程序(ISR)与特定的引脚和中断触发条件关联起来。
detachInterrupt():
取消特定引脚上的中断服务程序(ISR)的关联。
26. 中断 (Interrupts)
中断函数用于启用和禁用中断处理。
interrupts():
启用中断处理。
noInterrupts():
禁用中断处理。
27. 通信 (Communication)
通信函数用于与其他设备或计算机进行通信。
Serial:
串行通信对象,用于通过串口与计算机或其他设备进行通信。
Stream:
流通信对象,用于处理数据流的输入和输出。
以上是Arduino语言参考中关于三角函数、随机数、位和字节操作、外部中断、中断和通信的一些重要知识。
- 上一篇:Arduino中的digitalRead()函数使用
- 下一篇:Arduino的库