Arduino 知识点汇总
mnsd
函数名 参数 作用
loop 循环
setup 初始化
pinMode
digitalWrite
delay
tone
Serial.print
Serial.println
Serial.begin
其他生词 含义
Digital 数字,数码
Serial 连续的
tone 音调,声调
int 整数
volatile 易变的

初识Arduino、闪烁灯

安装步骤

  1. 安装开发板子对应的usb转串口驱动
  2. 安装Arduino IDE,老版本Mixly内置老版本Arduino IDE,但仅英文版,新版本Mixly内置Arduino cli,建议单独安装Arduino IDE 2.0.x版本
  3. 安装自己对应的开发板的管理器,如Arduino AVR Boards by Arduino(内置源自带)
  4. 连接电脑与开发板,选择开发板型号和端口号信息

第一个demo

  1. 必须包含且仅可包含一个setup函数(初始化函数,被执行一次)和loop函数(在初始化后被循环执行)

  2. 代码规范

    1. 语句规范。语句以;结尾
    2. 命名规范
    3. 注释规范。command + / 行注释;option + shift + a 块注释
    4. 缩进规范。tab 增加缩进;shift+tab 减少缩进
    5. 结构规范。 command + t 格式化程序
  3. 控制LED灯闪烁

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void setup() {  //初始化,只被执行一次

    }

    void loop() { // 循环,重复执行
    digitalWrite(4, HIGH); // 4管脚数字输出高电平
    delay(1000); //单位毫秒
    digitalWrite(4, LOW); // 4管脚数字输出低电平
    delay(1000); //单位毫秒
    }

    setuploop都是程序所必须包含的部分,不可省略任何一个!

程序烧录流程

  1. 编译。通过特定的c、c++编译器(avr-gccavr-g++)等编译工具链接相关库进行编译,语法错误则终止编译过程
  2. 上传到开发板。通过usb转串口芯片将编译好的二进制文件通过usb数据线传输到开发板,端口选择错误或数据线故障或开发板故障会中断上传
  3. 运行。开发板执行setup函数以及loop函数

代码规范、流水灯

官方文档

Arduino 官网

官网参考说明

流水灯

分别将三个LED灯泡连接至4、5、6号管脚,依次使管脚输出高电平、低电平,并进行相应的延时。

delay 函数接收参数的单位默认为毫秒

高电平可以用 HIGH1true 代替,低电平可以用 LOW0false 代替,注意大小写!不可忽略!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void setup() {  //初始化,只被执行一次

}

void loop() { // 循环,重复执行
digitalWrite(4, HIGH); // 4管脚数字输出高电平
delay(1000); //单位毫秒
digitalWrite(4, LOW); // 4管脚数字输出低电平

digitalWrite(5, 1); // 5管脚数字输出高电平
delay(1000); //单位毫秒
digitalWrite(5, 0); // 5管脚数字输出低电平

digitalWrite(6, true); // 6管脚数字输出高电平
delay(1000); //单位毫秒
digitalWrite(6, false); // 6管脚数字输出低电平
}

蜂鸣器

蜂鸣器分为有源蜂鸣器无源蜂鸣器两种,有源蜂鸣器通电可直接发声音,无源蜂鸣器只在接通或断开电源时发声,所以需要通过高低电平的切换来进行驱动。

1
2
3
4
5
6
7
8
9
void setup() {  //初始化,只被执行一次

}

void loop() { // 循环,重复执行
digitalWrite(4, HIGH); // 有源蜂鸣器,接入高电平直接发声

digitalWrite(5, HIGH); // 无源蜂鸣器,接入高电平只短暂响一下后停止发生
}

无源蜂鸣器需要通过高低电平的切换来进行发声

1
2
3
4
5
6
7
8
9
10
void setup() {  //初始化,只被执行一次

}

void loop() { // 循环,重复执行
digitalWrite(5, HIGH); // 无源蜂鸣器
delay(300);
digitalWrite(5, LOW);
delay(300);
}

tone函数对该方式进行了封装,可直接使用tone函数来进行驱动蜂鸣器

1
2
3
4
5
6
7
8
9
10
11
void setup() {  //初始化,只被执行一次

}

void loop() { // 循环,重复执行
tone(9,300); // 管脚:9 频率:300 时长:永远

tone(9,300,2000); // 管脚:9 频率:300 时长:2s

noTone(9); // 停止发声
}
  • 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
2
3
4
5
6
7
8
void setup() {  //初始化,只被执行一次
Serial.begin(9600); //设置串口波特率
}

void loop() { // 循环,重复执行
// Serial.print(10); // 串口打印不换行
Serial.println(10); // 串口打印换行
}

当开发板通过usb数据线连接至电脑时,通过电脑端的川口监视器即可看到接收到的数据。

数字输入、分支结构

数字输入

通过digitalRead读取数字输入信号,并通过串口打印将其发送至电脑

1
2
3
4
5
6
7
8
void setup() {

}

void loop() {
int v; // 定义一个整数变量
v = digitalRead(4); // 将数字管脚4读取到的值赋值给变量v,等号读作赋值号
}

通过按键控制LED灯亮灭

分支结构

1
2
3
4
5
6
7
8
9
if (条件1) {
语句1;
}

if (条件2) {
语句2;
} else {
语句3;
}

条件不可省略!条件必须加括号;条件满足,则执行其后紧邻的一个大括号内的所有语句

比较运算符

比较运算符 含义
> 大于
< 小于
>= 大于或等于
<= 小于或等于
!= 不等于
== 等于

按下则亮,松开则灭

1

初始状态为灭,按1下则亮,再按一下则灭

1

局部变量与全局变量

  1. 局部变量

    声明在函数内部,只在当前函数的内部生效。

  2. 全局变量

    声明在所有函数的外部,在所有函数内都可以读取到该值。

    volatile关键字的作用是告诉编译器,在对变量进行读写操作时,不要对变量进行任何优化,以确保变量的值能够正确地被读取和更新。在多线程和中断情况下,如果不使用volatile关键字,编译器可能会对变量进行一些优化,从而导致变量的值与预期不符。

 评论
评论插件加载失败
正在加载评论插件