重要的内容写在前面:
- 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。
- 个人把这个教程学完之后,整体感觉是很好的,如果有条件的可以先学习一些相关课程,学起来会更加轻松,相关课程有数字电路(强烈推荐先学数电,不然可能会有一些地方理解起来很困难)、模拟电路等,然后就是C++(注意C++是必学的)。
- 文章中的代码都是跟着老师边学边敲的,不过比起老师的版本我还把注释写得详细了些,并且个人认为重要的地方都有详细的分析。
- 一些函数的介绍有参考太极创客官网给出的中文翻译,为了便于现查现用,把个人认为重要的部分粘贴了过来并做了一些修改。
- 如有错漏欢迎指正。
视频链接:1-0 教程介绍_哔哩哔哩_bilibili
太极创客官网:太极创客 – Arduino, ESP8266物联网的应用、开发和学习资料
一、Arduino IDE界面和设置
1、选择开发板型号和端口
(1)首先将开发板通过USB线连接到电脑上。需要注意的是,USB线需要插牢,有时候USB线未插牢,开发板上的灯也会亮。
(2)选择开发板型号:
①可以通过上方的“工具”→“开发板”中选择相应的开发板型号。
②可以在下图所示的红框内选择相应的开发板型号。
(3)选择端口:
①可以通过上方的“工具”→“端口”中选择相应的端口。
②可以在下图所示的红框内选择相应的端口。
2、保存程序
3、了解软件界面
(1)快捷键区:除界面上提供的快捷按钮外,还有一些结合Ctrl键的快捷键。
①验证:检查代码区中所写的程序有没有错误(逻辑错误不会被检测出,比如死循环),并将程序翻译成计算机能够读懂的格式(即编译)。
②上传:程序编译后要上传(或者说下载、烧录)到开发板上运行。
③Ctrl+S:保存当前的项目进度。
④Ctrl+N:新建项目。
(2)代码区:编辑代码文件的区域。
(3)输出区:显示一些工作信息,比如编译程序时,可通过输出区的内容判断编译是否成功。
二、Arduino开发板基本介绍
(1)Arduino Uno R3官方板上的微控制器如下图红框所示,其上下(前后)有两排金属片引脚。
(2)将外接元器件通过导线插入板子上下两排端口,上下两排端口和微控制器的引脚是相连的,上图所示的端口分为三组,分别为数字输入/输出端口、模拟输入端口和电源端口(输入和输出是相对开发板而言的)。
(3)在数字输入/输出端口中有两个较为特殊的端口,这两个端口用于Arduino与电脑之间的数据传输,到目前为止,只要还有其它数字端口空闲,都不应该使用这两个端口。
(4)开发板通电后,标有“5V”的端口会提供5V的电压(当然这需要配合GND端口),标有“3.3V”的端口会提供3.3V的电压(当然这也需要配合GND端口)。
三、Arduino程序概述
1、初步认识Arduino程序
(1)Arduino程序使用C++进行编写,在学习Arduino之前建议先学习C++(最好是体系地学习),下面虽然会包含关于C++的一些知识,但不会介绍得很详细。
(2)程序注释:
①“//”后面跟着的是单行注释,单行注释可以跟在一行代码之后,也可以另起一行在开头进行注释;用“/* */”括起来的是多行注释。
②所有注释在编译时都会被去掉,不会影响程序本身的功能。
(3)在新建项目时,第一个代码文件总是会提供两个函数,其函数名分别为setup和loop,它们作为函数,其代码的特点是函数名右侧总有两个小括号,且后面会跟着一对大括号(或者说花括号),大括号内部则是一些函数代码(其它函数的定义代码亦是如此)。
2、变量
(1)一个变量分为变量名和变量值两部分,变量名用于访问变量,它对一个变量来说是不可变的,而一个变量的变量值在一般情况下都是可变的(但比如常变量,其变量值不可变)。
(2)每个变量都会占用计算机的一部分内存,具体占用多少空间取决于变量的类型,常用的变量类型有整型、浮点型、字符型、布尔类型等。需要注意的是,Arduino开发板中的内存空间并不是很大,在定义变量时需要合理利用内存空间,尽可能地减少内存浪费。
(3)变量的命名规则:
①只能由字母(区分大小写)、数字和下划线组成。
②开头可以是字母或下划线,不可以是数字或者其它字符。
③不能与关键字同名。(值得一提的是,在Arduino IDE中,HIGH代表1、LOW代表0,即代表高电平与低电平,它们也算是关键字,给变量命名时不能命名为HIGH和LOW)
(4)为了增加程序的可读性,变量的命名最好有实际意义,比如一个变量用来记录当前温度,则可将其命名为“current_Temperature”。
(5)在定义变量时可同时对其进行初始化,格式如下:
<变量类型> <变量名> = <变量值>; //无需初始化则省略“ = <变量值>”即可
3、程序结构
(1)根据“文件”→“示例”→“01.Basics”→“Blink”打开示例程序,该程序的功能是让开发板上的一个LED灯闪烁,闪烁周期为两秒。
//给开发板通电后或者按下复位按钮后,setup函数马上运行且仅运行一次,适合做一些初始化操作
void setup()
{
//初始化LED_BUILTIN数字引脚为输出模式
pinMode(LED_BUILTIN, OUTPUT);
}
//在开发板通电后,loop函数会反复地运行,适合做一些带有循环性质或监测性质的操作
void loop()
{
digitalWrite(LED_BUILTIN, HIGH); // 点亮LED(将引脚设置为高电平-HIGH)
delay(1000); // 等待1秒
digitalWrite(LED_BUILTIN, LOW); // 熄灭LED(将引脚设置为低电平-LOW)
delay(1000); // 等待1秒
}
(2)setup函数会在给开发板通电后或者按下复位按钮后立刻执行一次,且仅执行一次,适合做一些初始化操作,比如对引脚进行控制或读取其电平前都需要对引脚进行初始化,这个操作就可以在setup函数内进行;loop函数会在给开发板通电后反复执行,适合做一些带有循环性质或监测性质的操作,比如控制电机旋转或者测量当前温度等。
4、变量操作
(1)修改上面打开的Blink程序,将其下载到板子上后,板子上的LED灯会进行闪烁,但每闪烁一次,闪烁周期就会增加(不考虑delayTime超出整型变量取值范围的情况)。
int delayTime; //创建一个全局变量(默认初始化为0)
void setup()
{
// 初始化LED_BUILTIN数字引脚为输出模式
int delayTime = 10000; //创建一个局部变量
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
//这里的delayTime与steup函数中的delayTime无关,它访问的是全局变量
delayTime = delayTime + 1000; //赋值表达式,将delayTime + 1000的计算结果赋给delayTime
digitalWrite(LED_BUILTIN, HIGH); //点亮LED(将引脚设置为高电平)
delay(delayTime); //等待delayTime毫秒
digitalWrite(LED_BUILTIN, LOW); //熄灭LED(将引脚设置为低电平)
delay(delayTime); //等待delayTime毫秒
}
(2)对于每个变量都有其对应的作用域:
①不在函数内定义的变量是全局变量,其作用域是整个程序,在任何地方都能访问该全局变量。
②在函数内(或者说代码块,也就是一对花括号内的代码)定义的变量是局部变量,其作用域由离它最近的外层花括号指示,比如在loop函数内定义的变量,它最多只能在loop函数内使用。
③作用域没有交集的两个变量可以同名,当然,作用域有交集的两个变量也可以同名,但这种情况有点复杂,应尽量避免这种代码的产出。
5、程序函数
(1)Arduino IDE已经写好了一些函数供程序员调用,这些函数可以在Arduino的官网上查看使用说明。
(2)上面的示例程序中用到的函数:
①pinMode():通过pinMode()函数可以将Arduino的引脚配置为三种模式,分别是输出(OUTPUT)模式、输入(INPUT)模式和输入上拉(INPUT_PULLUP)模式,值得一提的是,对引脚进行控制或读取其电平前都需要对引脚的模式进行配置。
[1]程序中的“LED_BUILTIN”是指开发板上LED灯的引脚,不同开发板的LED灯对应的引脚号可能不同,程序编译时会根据开发板的型号判断“LED_BUILTIN”应为多少。
[2]pinMode有两个参数,第一个是引脚号,第二个引脚的模式,其中输入/输出是相对微处理机而言的,上面的示例中将引脚配置为输出模式,即微处理机可以控制引脚的电平。
[3]若配置引脚为输入上拉模式,在引脚没有任何输入时,认为引脚输入高电平;若配置引脚为输入模式(浮空输入模式),在引脚没有任何输入时,引脚为高阻态。
②delay():有且仅有一个参数,用于暂停程序运行,暂停时间可以由delay函数的参数进行控制,单位是毫秒。
③digitalWrite():有两个参数,第一个参数用于指示数字引脚,第二个参数用于指示高电平/低电平,其作用是将数字引脚写HIGH(高电平)或LOW(低电平),前提是该引脚需要通过pinMode()设置为输出模式(OUTPUT)。