【Arduino】从一个简单的例子入门Arduino
Arduino 是一个基于易用的软硬件的开源电子平台,适用于任何进行交互式项目的人。
Arduino is an open-source electronics platform based on easy-to-use hardware and software. It's intended for anyone making interactive projects.
这是官网对 Arduino 的解释,看了之后可能还是一头雾水,但你一定听说过物联网,这个概念这几年炒得实在太火,物联网即万物相连的互联网,节点是一个个智能设备,而用 Arduino 可以帮助我们创造这些智能设备,帮助我们实现创客梦想。Arduino 很难用一个简单的词或句子来定义,它是一个很庞大的体系,它有软件,有硬件,还有无数人一起交流学习的开源社区。
今天通过完全从零开始手把手地实现一个 Arduino 示例来让大家一起了解 Arduino。示例比较简单,就是让 LED 等以恒定的频率闪烁,实际效果见下方视频。
在开始之前,我认为你具备以下基础知识:
1)初中物理电学知识;
2)基础的编程知识:变量、函数等等。
另外,你最好还要拥有一套 Arduino 开发套装,我这里使用的是 Arduino UNO R3,比较适合初学者,所以你也可以买套这个,在某宝上搜索 “Arduino UNO R3” 即可。
Arduino IDE
打开 Arduino 的官方网站,打开“SOFTWARE - DOWNLOADS”,选择对应操作系统的版本下载,下载完成后进行安装。
拿出 Arduino 开发板以及 USB 方口打印机线,USB 连接电脑,方口连接 Arduino 开发板。
图1. Arduino开发板和数据线
第一次打开 Arduino IDE 需要设置开发板以及端口。选择“工具 - 开发板”,这里可以看到很多类型的开发板,因为我们使用的是 Arduino UNO,所以这里选择 “Arduino/Genuino Uno”。再选择“工具 - 端口”,选择 “Arduino/Genuino Uno” 选项。
图2. 设置开发板和端口
Arduino IDE 启动时,会默认打开一个文件,以“sketch_日期”命名。“Cmd + S” 保存,可以重命名以及指定保存目录。
在 IDE 的左上角有几个按钮,鼠标悬浮在上面时会看到按钮名称,分别是:
-
验证:编译代码,并且检查程序是否有误;
-
上传:将代码上传到 Arduino;
-
新建:新建一个新的文件;
-
打开:打开本地文件,除了自己历史保存的文件外,还有一些内置的文件;
-
保存:保存文件。
新建的文件中有两个默认的函数:setup和loop,这个我们后面细说。
Arduino 开发板
这部分带大家一起了解下 Arduino 开发板。
图3. Arduion开发板介绍
-
微控制器:是开发板的核心原件;
-
引脚:微控制器上下两排的金属片,是微控制器与外接沟通的途径。通过引脚,微控制器可以向外界元器件发出指令;
-
数字输入/输出端口:开发板接收数字信号(输入)和发送数字信号(输出)的端口。其中端口 0 是 RX,端口 1 是 TX,是 Arduino 用来与电脑传输数据时使用的,目前阶段我们应该避免使用这两个端口;
-
模拟输入端口:开发板接收模拟信号的端口;
-
电源端口:用来给开发板供电的端口,是给开发板供电的三种方式之一,另外两种分别是 USB 接口供电和外部直流电源供电。
更多的介绍也可以参考这篇博客:Arduino Uno R3 中文介绍。
Arduino 示例 - 闪烁的小灯
我们回到文章开头说的示例中,接下来我们使用前面掌握的基本知识完成这个示例。
电路图
如何让一个 LED 小灯亮起来呢?我们看个初中就学过的物理电路图。
图4. LED电路图
图 4 的电路图中电源负责供电,开关打开后电流由 LED 的正极流向负极,LED 便可以亮起来了。当电流从 LED 的正极流向负极的时候,电阻约等于 0,基本相当于一根导线,所以为了防止电源的正负极直连,所以还需要加一个电阻。而当电流从 LED 的负极流向正极的时候,电阻几乎无穷大,基本相当于断路,所以在连接 LED 的时候一定要区分好正负极。对应到实物中,LED 两根引脚中,长的那根是正极,短的那根是负极。
Arduino 实现电路图
那如何用 Arduino 实现电路图中的线路呢?我们看图 5 的模拟图。
图5. Arduino电路图
图 5 的模拟图中,Arduino 开发板被当成了电源,跟电阻相连的导线另一端与 Arduino 的 5 号引脚连接,与 LED 相连的导线的另一端与 Arduino 的 GND 端口连接。这么连接的原理是什么呢?
GND 是 Ground 的缩写,是接地的意思,为电路提供一个基准电位(0V)。当给 Arduino 的 5 号引脚施加大于 0V 的电压时,电路中便产生电流,电流通过 LED 时,LED 便会被点亮。如果 Arduino 的 5 号引脚的电压是 0V,那么电路中便不会产生电流,LED 也不会亮。
面包板
在正式实验之前,还要跟大家介绍一个电路实验的利器 - 面包板。在没有面包板时代,人们想要建立电路,需要使用一种叫“绕线”的技术,但电路复杂的时候,导线交错,一头乱麻。后来人们在切面包的板上固定电路,但还是很麻烦,每次连接电路时都需要焊接。后来就有了现代意义上的面包板。
图6. 面包板
面包板上有很多的小孔,只要将电子元器件插进这些整齐的小孔,便可以产生电路连接,避免了绕线的杂乱和焊接的麻烦。那怎么在面包板上搭建上面的电路呢?
图7. 面包板搭建电路图
对照图 7 的模拟图,我们看下搭建这个电路的步骤。
1)将导线一端插在 Arduino 的 5 号引脚中,另一端插在面包板的任意一个小孔中;
2)将电阻的一端插在跟导线插入的小孔同一列的小孔中。图中看,同一列的 5 个小孔都被标记为绿色,这 5 个小孔虽然看似相互隔离,但内部有金属装置,实际是直接相连的。所以导线和电阻虽然插在了同一列的两个小孔中,但实际上已经相连了;
3)顺着这个思路,我们将电阻和 LED 的正极进行相连;
4)再将 LED 的负极与另一根导线相连;
5)最后将导线插入 Arduino 的 GND 引脚中。
这样,完整的线路就被搭建起来啦!
Arduino 线路搭建
有了图 7 的模拟图,用实际的电子元器件搭建便很简单了。
图8. Arduino真实线路
Arduino 程序
电路搭建好以后,要想让 LED 灯闪烁,我们还需要将程序上传给 Arudino 开发板。
将这段代码复制粘贴到 Arduino IDE 中,依次点击“验证”、“上传”,便可以将编译好的程序上传给 Arduino 开发板,LED 灯便可以闪烁啦~
-
void setup() {
-
// put your setup code here, to run once:
-
pinMode(5, OUTPUT);
-
}
-
void loop() {
-
// put your main code here, to run repeatedly:
-
digitalWrite(5, HIGH);
-
delay(300);
-
digitalWrite(5, LOW);
-
delay(300);
-
}
上面的代码中有两个函数setup和loop,根据官网的解释,setup函数会在 Arduino 开始运行时被调用一次,一般用来初始化变量、引脚状态等等;loop函数是个循环体,在setup执行之后会反复执行。
上面的例子中,setup函数中调用了一次pinMode(5,OUTPUT),这个函数可以将 Arduino 的 5 号引脚设置为输出模式(OUTPUT),意味着 Arduino 5 号引脚可以提供电流。loop函数中分别调用了两次digitalWrite和delay函数,digitalWrite可以为数字引脚写入高电平(HIGH)或低电平(LOW),这里第一个参数指的是为 5 号引脚写入 HIGH 或 LOW。如图 5 所示,当调用digitalWrite(5,HIGH)时,Arduino 的 5 号引脚会产生 5V 的电压,那么电路中便可以产生电流,LED 灯就会亮,而当调用digitalWrite(5,LOW)时,Arduino 的 5 号引脚处的电压会被设置成 0V,跟另一端 GND 的电压一致,所以电路中便没有电流,LED 灯也不会亮。所以再看loop中的 4 行语句就简单了,digitalWrite(5,HIGH)让 Arduino 的 5 号引脚产生 5V 的电压,电路产生电流,LED 亮,持续 300 毫秒后又通过digitalWrite(5,LOW)让 LED 的两端电压均为 0V,LED 灭,持续 300 毫秒后这一过程循环执行,这样,LED 便可以一闪一闪啦!
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com