首先这样一块板卡的价格一般在10元到20元不等,基本上在各类购物APP上任选一款即可,对初学者而言,没有太大的区别,包括我们后期在完成每个项目所需的各类传感器和执行器都可以用便宜的价格在购物APP上买到,在每个章节开始前,我都会列一张本章所需物品清单,以供学习者提前准备。
1.首先看到板卡面积最大的矩形区域,这是整个板卡的核心(相当于电脑的CPU)——一块型号为ATMega328p的芯片,是一款高性能、低功耗AVR 8位微控制器。当前的UNO板提供了两种不同的封装的此种芯片,即还有另一款更加小型的正方形的芯片。
2.再来看到整块板卡的右上方的USB-B端口,我们称之为串口,用于连接电脑并向板卡烧录程序,并且可用于监视连接到板卡的传感器状态。
3.板卡的左上方是一个DC电源底座,可向板卡输入5v/12v电源,可用于整个系统的供电。
4.板卡中用横线划分出了三个功能区域:POWER、ANALOG IN、DIGITAL,分别是电源输出、模拟信号输入及数字信号区域,其中POWER区域的RESET接低电平可重置板卡;3.3V及5V可输出相应电压;GND为接地,输出低电压;Vin输出DC端口接入的电源电压;至于ANALOG IN及DIGITAL端口我们在后面项目用到时再做具体讲解。
打开Arduino编译软件,将直接进入到上图界面,初始界面包含两部分代码块——setup和loop;其功能与其名称一样,setup区域的代码用于初始化各端口,loop译为“环”,其内部的代码会从头到尾不停的循环执行(具体使用方面在下面编程教学中介绍)。
界面左上方有5个可点选按钮,分别用于“验证”(编译代码)、“上传程序到板卡”、“新建文件”、“打开项目”及“保存”;当然“验证”和“上传”会先自动保存代码,当前知道这些就已经足够。
首先对于二极管而言是要分正负极的,二极管的性状便是正向导通,因此发光二极管在正向导通电流后才会被点亮,这里提供三种分辨发光二极管正负极的方法——1.观察针脚的长短(长针脚为正极,短针脚为负极);2.观察灯头底部环形凸起(圆形中有豁口的一侧为负极,这个区别有些细微,需仔细观察);3.观察灯头内金属片(大金属片的一端为负极,小金属片的一端)。
为了验证发光二极管是否正常工作,现可将 Arduino 板与电脑使用串口数据线连接,连接后 Arduino 板指示灯会被点亮;此时我们将发光二极管针脚分别接入 5V 及 GND,这里最好使用绿色发光二极管(不同颜色的发光二极管,能承受的最大电压不一样,黄色发光二极管接入可能会烧坏),另外如果正负极接反也会烧坏发光二极管,当然不会有什么危险,不必担心。
每学习一种新的编程语言,我们都会很有仪式感的输出打开新世界大门的第一段效果,比如学习 C 语言时我们首先输出了“Hello World”,代表我们开启了 C 语言的学习;那学习 Arduino 也一样,接下来我们使用一段程序来点亮 LED 灯(即发光二极管,以后我们统称为 LED 灯),也许在刚刚测试 LED 灯的过程中已经点亮了一次,但上次的点亮仅仅是由最简单的接入正负级,并没有可控性;接下来我们将 LED 灯插入 Arduino 板右侧的数字端口一侧,原则上可以随意接入,但我们不妨统一将正极接入 8 号针脚,负极接入 9 号针脚,如下图所示:
然后打开 Arduino IDE(即代码编译器)。
首先在 void setup 区域输入以下代码:
pinMode(8,OUTPUT); //设置 8 号针脚为输出
pinMode(9,OUTPUT); //设置 9 号针脚为输出
setup 区域的代码用于完成一些必要的初始化,上述代码块的作用为将刚刚连接 LED 灯的针脚均设置为输出模式(注:要注意代码块中的符号一定为英文输入法下的符号),“//” 后的文字我们称之为注释,即并不会执行的代码,作用为提示我们代码块的含义或功能。
在 void loop 区域我们输入以下代码:
digitalWrite(8,HIGH); //设置8号针脚输出高电平
digitalWrite(9,LOW); //设置9号针脚输出低电平
loop 区域的代码会自上而下并持续循环执行,上述代码块的作用是给 8 号高电平,给 9 号低电平,这样就形成了一个通路,从而可以点亮 LED 灯。
接下来点击编译器的“验证”按钮,对整个程序进行编译,在未报错的前提下再进行下一步。
接下来需要在连接 Arduino 板到电脑的前提下,打开编译器的“工具”菜单栏,第一步先将开发板选择对应的型号,这里我们选择 Arduino UNO,然后在“端口”菜单栏选择连接的端口号(如果不确定可以插拔一下传输线,看一下哪个端口发生了变化)。
最后点击“上传”按钮,等待程序上传完成,如果正常的话,此时位于数字端口的 LED 灯应该已经被点亮,这是真正意义上的第一个通过 Arduino 平台来完成的“项目”。
接下来不妨将 LED 灯插到不同的端口,改写程序联系练习一下;并尝试如果将两个端口都置低电平或者都置高电平会有什么变化?
在能够通过程序点亮LED 灯之后,我们来使用多个 LED 灯来完成流水灯的效果,首先按照下图将 LED 灯接入相应端口:
将 5 盏 LED 灯接入数字端口,其中正极接入偶数端,负极接入奇数端;接下来思考,如何点亮 LED 灯才能实现流水灯的效果?
思考片刻后应该很容易得到答案——即让 LED 灯按顺序逐个点亮,并逐个熄灭,并且在同一瞬间仅有一盏灯处在点亮的状态,下面我们用代码来实现这个效果:
void setup()
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT); //设置 2~11 号端口均为输出
}
首先在 setup 区域对端口进行初始化
void loop()
{
digitalWrite(2,1); //1 或 0 分别代表高低电平
digitalWrite(3,0); //点亮 1 号灯
delay(100); //delay函数用于使程序停留(若干)毫秒
digitalWrite(2,0);
digitalWrite(3,0); //熄灭 1 号灯
delay(100); //延时 100 毫秒
digitalWrite(4,1);
digitalWrite(5,0); //点亮 2 号灯
delay(100);
digitalWrite(4,0);
digitalWrite(5,0); //熄灭 2 号灯
delay(100);
digitalWrite(6,1);
digitalWrite(7,0); //点亮 3 号灯
delay(100);
digitalWrite(6,0);
digitalWrite(7,0); //熄灭 3 号灯
delay(100);
digitalWrite(8,1);
digitalWrite(9,0); //点亮 4 号灯
delay(100);
digitalWrite(8,0);
digitalWrite(9,0); //熄灭 4 号灯
delay(100);
digitalWrite(10,1);
digitalWrite(11,0); //点亮 5 号灯
delay(100);
digitalWrite(10,0);
digitalWrite(11,0); //熄灭 5 号灯
delay(100);
}
loop 区域的程序我们上面讲过,会自上而下并且循环不停的执行,这里涉及到了一个 delay 函数,我们称之为延时,且括号内的数字为要延时的毫秒数,比如上述代码会使得 LED 灯点亮,100 毫秒后再熄灭,从 1 号到 5 号依次执行,并在执行完成后不停的循环执行。
最后,同样在编译器“工具”栏,选择对应型号的板卡及对应的端口,点击“上传”,未出错的话,5盏LED灯应该已经完成“流水灯”的效果了。
在完成“流水灯”的效果后,可以尝试改写一下延时的时间,这将会改变流水效果的快慢;或者改变一下流水效果的模式,当前我们是按照12345的顺序流水,可以尝试完成5 -> 4 -> 3 <-2 <- 1,即从两边向中间的流水效果。
这一章完成了第一个Arduino项目,这是一个肉眼看的见得效果,当然从中也基本了解了Arduino平台的运行原理,并且能够简单的对其进行使用;本章顺利完结。