【Arduino】从一个简单的例子入门Arduino

网友投稿 2019-09-24 12:35

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 开发板。

https://cdn.china-scratch.com/timg/190926/1235153561-0.jpg

图1. Arduino开发板和数据线

第一次打开 Arduino IDE 需要设置开发板以及端口。选择“工具 - 开发板”,这里可以看到很多类型的开发板,因为我们使用的是 Arduino UNO,所以这里选择 “Arduino/Genuino Uno”。再选择“工具 - 端口”,选择 “Arduino/Genuino Uno” 选项。

https://cdn.china-scratch.com/timg/190926/1235153N7-1.jpg

图2. 设置开发板和端口

Arduino IDE 启动时,会默认打开一个文件,以“sketch_日期”命名。“Cmd + S” 保存,可以重命名以及指定保存目录。

在 IDE 的左上角有几个按钮,鼠标悬浮在上面时会看到按钮名称,分别是:

  • 验证:编译代码,并且检查程序是否有误;

  • 上传:将代码上传到 Arduino;

  • 新建:新建一个新的文件;

  • 打开:打开本地文件,除了自己历史保存的文件外,还有一些内置的文件;

  • 保存:保存文件。

新建的文件中有两个默认的函数:setup和loop,这个我们后面细说。

Arduino 开发板

这部分带大家一起了解下 Arduino 开发板。

https://cdn.china-scratch.com/timg/190926/12351630G-2.jpg

图3. Arduion开发板介绍

  • 微控制器:是开发板的核心原件;

  • 引脚:微控制器上下两排的金属片,是微控制器与外接沟通的途径。通过引脚,微控制器可以向外界元器件发出指令;

  • 数字输入/输出端口:开发板接收数字信号(输入)和发送数字信号(输出)的端口。其中端口 0 是 RX,端口 1 是 TX,是 Arduino 用来与电脑传输数据时使用的,目前阶段我们应该避免使用这两个端口;

  • 模拟输入端口:开发板接收模拟信号的端口;

  • 电源端口:用来给开发板供电的端口,是给开发板供电的三种方式之一,另外两种分别是 USB 接口供电和外部直流电源供电。

更多的介绍也可以参考这篇博客:Arduino Uno R3 中文介绍。

Arduino 示例 - 闪烁的小灯

我们回到文章开头说的示例中,接下来我们使用前面掌握的基本知识完成这个示例。

电路图

如何让一个 LED 小灯亮起来呢?我们看个初中就学过的物理电路图。

https://cdn.china-scratch.com/timg/190926/1235164A9-3.jpg

图4. LED电路图

图 4 的电路图中电源负责供电,开关打开后电流由 LED 的正极流向负极,LED 便可以亮起来了。当电流从 LED 的正极流向负极的时候,电阻约等于 0,基本相当于一根导线,所以为了防止电源的正负极直连,所以还需要加一个电阻。而当电流从 LED 的负极流向正极的时候,电阻几乎无穷大,基本相当于断路,所以在连接 LED 的时候一定要区分好正负极。对应到实物中,LED 两根引脚中,长的那根是正极,短的那根是负极。

Arduino 实现电路图

那如何用 Arduino 实现电路图中的线路呢?我们看图 5 的模拟图。

https://cdn.china-scratch.com/timg/190926/12351CU0-4.jpg

图5. Arduino电路图

图 5 的模拟图中,Arduino 开发板被当成了电源,跟电阻相连的导线另一端与 Arduino 的 5 号引脚连接,与 LED 相连的导线的另一端与 Arduino 的 GND 端口连接。这么连接的原理是什么呢?

GND 是 Ground 的缩写,是接地的意思,为电路提供一个基准电位(0V)。当给 Arduino 的 5 号引脚施加大于 0V 的电压时,电路中便产生电流,电流通过 LED 时,LED 便会被点亮。如果 Arduino 的 5 号引脚的电压是 0V,那么电路中便不会产生电流,LED 也不会亮。

面包板

在正式实验之前,还要跟大家介绍一个电路实验的利器 - 面包板。在没有面包板时代,人们想要建立电路,需要使用一种叫“绕线”的技术,但电路复杂的时候,导线交错,一头乱麻。后来人们在切面包的板上固定电路,但还是很麻烦,每次连接电路时都需要焊接。后来就有了现代意义上的面包板。

https://cdn.china-scratch.com/timg/190926/12351L634-5.jpg

图6. 面包板

面包板上有很多的小孔,只要将电子元器件插进这些整齐的小孔,便可以产生电路连接,避免了绕线的杂乱和焊接的麻烦。那怎么在面包板上搭建上面的电路呢?

https://cdn.china-scratch.com/timg/190926/12351H119-6.jpg

图7. 面包板搭建电路图

对照图 7 的模拟图,我们看下搭建这个电路的步骤。

1)将导线一端插在 Arduino 的 5 号引脚中,另一端插在面包板的任意一个小孔中;

2)将电阻的一端插在跟导线插入的小孔同一列的小孔中。图中看,同一列的 5 个小孔都被标记为绿色,这 5 个小孔虽然看似相互隔离,但内部有金属装置,实际是直接相连的。所以导线和电阻虽然插在了同一列的两个小孔中,但实际上已经相连了;

3)顺着这个思路,我们将电阻和 LED 的正极进行相连;

4)再将 LED 的负极与另一根导线相连;

5)最后将导线插入 Arduino 的 GND 引脚中。

这样,完整的线路就被搭建起来啦!

Arduino 线路搭建

有了图 7 的模拟图,用实际的电子元器件搭建便很简单了。

https://cdn.china-scratch.com/timg/190926/12351W943-7.jpg

图8. Arduino真实线路

Arduino 程序

电路搭建好以后,要想让 LED 灯闪烁,我们还需要将程序上传给 Arudino 开发板。

将这段代码复制粘贴到 Arduino IDE 中,依次点击“验证”、“上传”,便可以将编译好的程序上传给 Arduino 开发板,LED 灯便可以闪烁啦~

  1. void setup() {

  2. // put your setup code here, to run once:

  3. pinMode(5, OUTPUT);

  4. }

  5. void loop() {

  6. // put your main code here, to run repeatedly:

  7. digitalWrite(5, HIGH);

  8. delay(300);

  9. digitalWrite(5, LOW);

  10. delay(300);

  11. }

上面的代码中有两个函数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