资讯详情

想做钢铁侠?听说很多大佬都是用它入门的

f8648917e8141b3ed65c895170a4f898.png

作者:HelloGitHub-

你有没有想过成为一名 Geek,就像野钢铁侠志辉军一样,他可以制造各种新颖有趣的电子设备,但他不知道从哪里开始,如何开始?今天我们不谈嵌入式、电路板、单片机原理,直接开始做!

我认为对于零基础的电子爱好者来说,一个易于使用的开发板是非常重要的。否则,复杂的安装步骤和调试过程会消失最初的热情,在看到成品之前就放弃。所以,今天 HelloGitHub 带来的 Arduino 就是一个开源硬件平台:

项目地址:https://github.com/arduino/Arduino

该项目包括 开发板(如 Arduino UNO)和 软件(Arduino IDE)两部分,它,当你遇到问题时,你可以很容易地找到解决办法。如果你想做项目,你也参考完整的代码和项目。

我当年在 C 语言不是很熟练,跟随教程只需要一天时间 Arduino 可以看到一些花哨的功能Arduino 真的很适合电子爱好者

接下来,我将帮助零基础电子爱好者通过三个部分快速入门:闻道(入门)、见道(入手)、入道 Arduino,开始你的钢铁侠之旅。

一、闻道(介绍)

1.1 推荐型号

Arduino 到目前为止,有很多种开发板。我建议你在这里使用 UNO 作为您的第一块开发板。原因如下:

  1. 普及:玩 UNO 人多,网上有很多 UNO 的教程

  2. 便宜:与其他类型的开发板相比UNO 真的很便宜

  3. 可拆卸:板材使用时间长,难免会出现各种问题。可拆卸支持只更换有问题的零件

1.2 UNO R3 开发板

截至目前,市场上常见的 UNO 开发板为 UNO R如图所示,3 开发板:

b334564a257e91499dc324a918ca17bb.png

Arduino UNO R3 使用一根数据线连接电脑即可实现 等功能。

详细的硬件参数
微控制器 ATmega328P
工作电压 5 伏特
输入电压(推荐) 7-12 伏特
输入电压(极限) 6-20 伏特
数字输入输出引脚 14 个
PWM 引脚 6 个
模拟输入引脚 6 个
输入/输出引脚直流电流 20 毫安
3.3V 引脚电流 50 毫安
Flash Memory(闪存) 32 KB (ATmega328P) 其中有 0.5 KB 用于系统引导
SRAM(静态存储器) 2 KB (ATmega328P)
时钟频率 16 MHz
EEPROM 1 KB (ATmega328P)
内置 LED 引脚 13
68.6 mm
53.4 mm
25 克

不要惊讶于开发板比计算机只有如此有限的资源,这个参数足以适用于大多数场合。足够的电压输入范围允许设备使用,包括计算机 USB 接口、干电池、充电宝等供电方式不烧毁。

关于购买方式,可以通过关键词去各大电商平台Arduino UNO R三是能找到很多。

可以选择直接买套餐,也可以自己买板子,然后根据需要购买配件,

1.3 开发环境

Arduino 开源项目有自己的跨平台和编程环境—— 支持 Windows/Linux/macOS 操作系统。

它集成了 Arduino 开发所需的所有环境和支持库只需选择开发板,然后点击鼠标几次即可实现编译、烧录、串口监控等功能。

此外,Arduino近年来, 还推出了网页编辑器和 Arduino CLI, 进一步减少Arduino 开发门槛。

d6b8c92a4e8fea6fe85d101d38be8932.png

假如你不喜欢 Arduino 或者想用别的 IDE,也可选择安装 VSCode Platform IO 开发插件,Platform IO包括 Arduino 大多数嵌入式开发所需的环境也可以实现一键编译、下载和调试。

dd120b8792429a7f5d8ae6d19d829d21.png

:本教程后续采用 Arduino IDE 讲解演示。

1.4 配置环境

网上已经有很多 1了.8 版本使用教程,因为 v1 版本自动补充代码不是很好。

因此,这里使用 Arduino IDE 2.0 RC 版,在 Windows 演示操作系统。

官方下载地址:https://www.arduino.cc/en/software

进入下载网站后,可以看到 Arduino IDE 2.0 RC 下载入口:

da3b44d720e26a1a110628a40ecfc855.png

由于服务器位于国外,下载速度可能不快,需要耐心等待

按提示下载后,启动程序可以看到以下界面:

77f0484fc9223bfc1df26a6d205453db.png

注:这里大家的配色可能不同,默认是黑底白字,可以在 File->Preference->Theme 处更改

下面我们点开 板级支持库管理 安装 Arduino AVR Boards” 的库:

beebaf8c54655b3905bd2b64b41870e7.png

:由于 Arduino CLI 本身问题,这里可能会出现诸如 Access is denied 等错误,

安装完成后应该会有如下文字输出:

79b3864be08ed0cc2e9ecc913f9c0ead.png

驱动安装完成后插上我们的开发板,然后在 开发板选择 下拉框进行选择:

b66da886b6e5d8c7ae291f0b8d1ef963.png 43a992a4d4b64f1a168949ffff14cabb.png

根据大家连接 USB 口的不同,这个不一定都是 COM3,大家需要自行判断。或者,或者

1.5 运行段代码

下面运行一段点灯的代码,类似于“Hello World”,万物始于点灯!

选择好后开发板后,复制如下内容到 编辑窗口

void setup() {  pinMode(LED_BUILTIN, OUTPUT);}void loop() {  delay(300);  digitalWrite(LED_BUILTIN, HIGH);  delay(300);  digitalWrite(LED_BUILTIN, LOW);}

目前这段代码现在看不懂不要紧,下面会有逐行的讲解。

点击 烧录 按钮,终端会出现如下提示:

1698eee031b85314dc457d38255d0b71.png

并且开发板上的 LED 开始闪烁:

e6e4fd32cc009852672a7f08d8ad96d4.gif

至此,环境就配置成功啦!

二、见道(上手)

这里将介绍如何编写 Arduino 的代码。

Arduino 库是使用 C++ 编写的,官方将很多功能包装成了一个个函数,但是对于初学者来讲不需要了解这么多,

,现在就让我们先简单了解一下 Arduino 语言相关内容。

2.1 启动流程

一般来讲,我们的 C 语言程序都是从一个 main 函数开始的,但是在之前的教程中我们发现 IDE 生成的文件中只有 setuploop 两个函数,那么 Arduino 是如何调用它们的呢?

实际上,真正的 main 函数存在于我们的 Arduino 库文件中(位于 Arduino->main.cpp),其定义如下:

int main(void){    // 进行一些硬件和变量初始化工作 init(); initVariant();#if defined(USBCON) USBDevice.attach();#endif // 调用我们编写的 setup() 函数 setup();     for (;;) {        // 调用我们编写的 loop() 函数  loop();  if (serialEventRun) serialEventRun(); } return 0;}

可以看到我们编写的 setuploop 两个函数会在 main 中进行调用。当然,相关文件是如何组织和编译的这就是 Arduino 工具链所提供的功能了,这里我们不做深入了解,

2.2 常用的函数

Arduino 为我们提供了多种函数以供使用,具体细节可以查看 Arduino API 手册。

不去记忆相关函数,善用 IDE 的智能补全和搜索引擎,便可快速上手

接下来我们通过讲解上面的点灯代码,简单介绍几个常用的函数:

void setup():初始化相关引脚和变量

在 Arduino 中程序运行会先调用 setup() 函数,用于初始化变量、设置针脚的输出\输入类型、配置串口、引入类库文件等等。每次 Arduino 上电或重启后,setup 函数只运行一次,例如:

void setup(){  pinMode(LED_BUILTIN, OUTPUT); // 设置内置 LED 端口为输出模式}

之后会执行 loop() 函数,顾名思义该函数在程序运行过程中不断地循环,直到芯片断电为止。

void loop(){  delay(300); // 等待 300ms  digitalWrite(LED_BUILTIN, HIGH);// 内置 LED 输出高电平,点亮灯  delay(300);  digitalWrite(LED_BUILTIN, LOW);// 内置 LED 输出低电平,熄灭等}

循环中的代码每隔 300ms 点亮/熄灭灯,实现灯闪烁的效果。下面是用到的常量和函数详解:

  • HIGH | LOW:表示数字 IO 口的电平,HIGH 表示高电平(1 即输出电压“点亮”),LOW 表示低电平(0 即不输出电压“熄灭”)

  • INPUT | OUTPUT:表示数字 IO 口的方向,INPUT 表示输入(高阻态,即相当于电阻极大可以读取输入电压信号),OUTPUT 表示(输出电压信号)

  • pinMode(pin, mode):数字 IO 口输入输出模式定义函数,参数 mode 可为 INPUT 或 OUTPUT

  • digitalWrite(pin, value):数字 IO 口输出电平定义函数,参数 value 可为 HIGH 或 LOW,可用来点亮 LED

  • int digitalRead(pin):数字 IO 口读输入电平函数,返回值为 HIGH 或 LOW,可以用来读数字传感器

注:参数 pin 值的范围为 0~13,代指 14 根引脚。

  • delay(ms):延时函数(单位 ms)

以上为常见函数,不需要记忆有个印象即可,后面经常用就记住了。

2.3 什么是串口

在写代码之前,需要先搞清楚什么是串口。

这个问题各种百科已经给出了答案,但是对于初学者来讲难这些文字难免有些官方。通俗来讲,

一般来讲我们使用开发板上的 UART 串口进行通信,它使用两根信号线进行通信,一个名为 TX(消息发送端)一个名为 RX(消息接收端),他们的职责非常单一。

  • TX:只能发送消息

  • RX:只能收听消息

所以使用的时候应该将 TXRX 交叉连接:

02f5b95e820dfb1d42e9655bc0c9d69d.png

此外,串口在使用的时候如果没有额外的线缆给出同步时钟信号则还需要指定串口的波特率,这相当于两芯片之间的约定:我说我一分钟能输出 100 个二进制信号,那么平均来讲每个信号的时长就是 1/100 秒,你只需要每 1/100 秒接收一次即可跟上我的脚步。

当然,这里的比喻存在些许漏洞,实际上的通信过程会稍微复杂一些以保证通信的可靠性和正确性。

我们现在开始实践!由于篇幅关系,具体使用到的函数大家可以参考 API 手册。

2.4 发送 HelloGitHub

这里 Arduino 已经为我们准备好了 Serial(串口),只需要简单几步即可实现消息的发送。

这里使用的是一个 Arduino 官方库,为我们准备好的 Serial 对象。如果您不了解 C++ 对象相关概念也不影响您的使用,类似 Serial.begin() 这种语法相当于函数调用(或者更官方的称呼是“方法”),它只不过是 Serial 特有的函数而已。代码如下:

#include <Arduino.h>void setup(){    // 设置波特率为 9600,我们的电脑读取的时候也要保持相同  Serial.begin(9600);}void loop(){  // 串口输出一行文字,会自动加换行符  Serial.println("HelloGitHub");  // 等待一会儿,防止发送太快卡死  delay(1000);}

将上面的程序“烧录”到开发板中,然后点击 “Serial Monitor”(类似浏览器的开发者模式)查看串口。

4f646c2cc06d531c32f360d3a8ca9204.png

这时就可以在控制台,看到发送的消息了:

273903491a04e2466de5506268e545f0.png

2.5 接收消息

上面讲完了如何发送,现在我们来说说如何让 Arduino 从电脑或者什么其他地方接收消息。

下面是一段“回声”代码:

#include <Arduino.h>int count; // 记录缓冲区字节数char buffer[65]; // 存储从缓冲区读出来的字符void setup(){  // 做一些初始化工作  Serial.begin(9600);  count = 0;}void loop(){  // 这个 Serial.available() 会返回当前接受了多少字符存储再缓存区  count =  Serial.available();      if (count > 0) // 如果缓存区存了东西  {    // 读取 count 个字符到 buffer 中    Serial.readBytes(buffer, count);    // 添加结尾,为了后面发送    buffer[count] = '\0';    // 发送    Serial.println(buffer);  }  // 给一点时间多接收一点消息,不然只能一个字母一个字母的返回  delay(800);}

烧录以上程序,按照之前的方法查看串口。需要在这个框框里输入要发送的内容,然后使用快捷键 Ctrl+Enter 发送。

9bf3e0656004a249fd1e36cf1f283057.png

这里将在控制台看到消息是,接收到的和发送的一模一样,故称为“回声”。

至此,关于串口的基本使用就讲完了。虽然这里实现的功能很简陋,但这是所有大神的必经之路。所有复杂的功能其实都是用这些看似简陋的基础功能实现的。

三、入道

3.1 社区

Arduino 拥有非常活跃的中文社区,新手提的问题大都能得到网友的热心解答。社区里还有很多人分享自己的作品,即使是零基础的小白也能在这里快速地成长。

f99cf8fd8385173285847998b16403f9.png

3.2 作品展示

超声波避障小车

bf9d160e0b7c8bc94c9b2c71c30f762d.png

三自由度机械臂

031e489c2020c499cf9f6144ab920430.png

简易密码的制作

721598ffcf123905c0ea39b891379033.png

多功能透明显示屏桌面站

e242dce0bde192c97da37c092af16b8f.png

相信不久的将来的你也可以做出,如此炫酷的电子玩意儿。

四、最后

以上就是 HelloGitHub 讲解开源系列之《Arduino 教程》入门篇的全部内容,如果你对 DIY 电子产品感兴趣,不妨关注 HelloGitHub 能够第一时间收到后续内容的更新。

预告:下一篇将介绍如何用 Arduino 做一个温湿度显示器,通过实战加深对 Arduino 了解。

标签: rx20电阻用做什么电路里

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台