
函数名 | 参数 | 作用 |
---|---|---|
loop | 循环 | |
setup | 初始化 | |
pinMode | ||
digitalWrite | ||
delay | ||
tone | ||
Serial.print | ||
Serial.println | ||
Serial.begin | ||
其他生词 | 含义 |
---|---|
Digital | 数字,数码 |
Serial | 连续的 |
tone | 音调,声调 |
int | 整数 |
volatile | 易变的 |
初识Arduino、闪烁灯
安装步骤
- 安装开发板子对应的usb转串口驱动
- 安装Arduino IDE,老版本Mixly内置老版本Arduino IDE,但仅英文版,新版本Mixly内置Arduino cli,建议单独安装Arduino IDE 2.0.x版本
- 安装自己对应的开发板的管理器,如
Arduino AVR Boards by Arduino
(内置源自带) - 连接电脑与开发板,选择开发板型号和端口号信息
第一个demo
必须包含且仅可包含一个
setup
函数(初始化函数,被执行一次)和loop
函数(在初始化后被循环执行)代码规范
- 语句规范。语句以
;
结尾 - 命名规范
- 注释规范。
command
+/
行注释;option
+shift
+a
块注释 - 缩进规范。
tab
增加缩进;shift
+tab
减少缩进 - 结构规范。
command
+t
格式化程序
- 语句规范。语句以
控制LED灯闪烁
1
2
3
4
5
6
7
8
9
10void setup() { //初始化,只被执行一次
}
void loop() { // 循环,重复执行
digitalWrite(4, HIGH); // 4管脚数字输出高电平
delay(1000); //单位毫秒
digitalWrite(4, LOW); // 4管脚数字输出低电平
delay(1000); //单位毫秒
}setup
和loop
都是程序所必须包含的部分,不可省略任何一个!
程序烧录流程
- 编译。通过特定的c、c++编译器(
avr-gcc
、avr-g++
)等编译工具链接相关库进行编译,语法错误则终止编译过程 - 上传到开发板。通过usb转串口芯片将编译好的二进制文件通过usb数据线传输到开发板,端口选择错误或数据线故障或开发板故障会中断上传
- 运行。开发板执行
setup
函数以及loop
函数
代码规范、流水灯
官方文档
流水灯
分别将三个LED灯泡连接至4、5、6号管脚,依次使管脚输出高电平、低电平,并进行相应的延时。
delay 函数接收参数的单位默认为毫秒
高电平可以用
HIGH
、1
、true
代替,低电平可以用LOW
、0
、false
代替,注意大小写!不可忽略!
1 | void setup() { //初始化,只被执行一次 |
蜂鸣器
蜂鸣器分为有源蜂鸣器
和无源蜂鸣器
两种,有源蜂鸣器通电可直接发声音,无源蜂鸣器只在接通或断开电源时发声,所以需要通过高低电平的切换来进行驱动。
1 | void setup() { //初始化,只被执行一次 |
无源蜂鸣器需要通过高低电平的切换来进行发声
1 | void setup() { //初始化,只被执行一次 |
tone函数对该方式进行了封装,可直接使用tone函数来进行驱动蜂鸣器
1 | void setup() { //初始化,只被执行一次 |
- C(do):261.63 Hz
- D(re):293.66 Hz
- E(mi):329.63 Hz
- F(fa):349.23 Hz
- G(so):392.00 Hz
- A(la):440.00 Hz
串口打印
通过调用Serial.print
函数或者Serial.println
函数从开发板向外围设备(如电脑)发送文本信息。
使用串口前需要先初始化设置串口的波特率,即传输速率,通常设置为9600、19200、57600、115200等,没有特殊需求尽量不要设置过高。
1 | void setup() { //初始化,只被执行一次 |
当开发板通过usb数据线连接至电脑时,通过电脑端的川口监视器即可看到接收到的数据。
数字输入、分支结构
数字输入
通过digitalRead读取数字输入信号,并通过串口打印将其发送至电脑
1 | void setup() { |
通过按键控制LED灯亮灭
分支结构
1 | if (条件1) { |
条件不可省略!条件必须加括号;条件满足,则执行其后紧邻的一个大括号内的所有语句
比较运算符
比较运算符 | 含义 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
!= | 不等于 |
== | 等于 |
按下则亮,松开则灭
1 |
初始状态为灭,按1下则亮,再按一下则灭
1 |
局部变量与全局变量
局部变量
声明在函数内部,只在当前函数的内部生效。
全局变量
声明在所有函数的外部,在所有函数内都可以读取到该值。
volatile
关键字的作用是告诉编译器,在对变量进行读写操作时,不要对变量进行任何优化,以确保变量的值能够正确地被读取和更新。在多线程和中断情况下,如果不使用volatile
关键字,编译器可能会对变量进行一些优化,从而导致变量的值与预期不符。