前言
很早之前就买了一块Arduino的板子,但一直吃灰到现在。最近花时间学习了一下,发现这块板子简直是小白的必备入门板(底层高度封装,资料丰富)。当然,Arduino虽然简单,这并不影响它强大的功能,相信在学习的过程中,你能收获创造的快乐。
我习惯将所做的实验记录下来,每一章都会介绍一种硬件,以及相关函数。将多个章节结合起来,是为一篇,每一篇结尾,都会做一个综合性的小项目。它将会用到前面章节中所学习的知识。
这是第一篇,我们的目标是做一个机械臂!很酷吧!那么,废话不多说了,我们开始吧!
本系列参考1
Arduino介绍
Arduino不特指某个单片机或是开发环境,实际上泛指整个从软件到硬件形成的生态。
Arduino基于Arduino IDE进行开发,底层是C语言和C++,硬件、代码开源。具有生态丰富,跨平台等特点。
Arduino 开发板
Arduino常用的开发板有Arduino UNO、Arduino Nano、Arduino Mega 2560等。本文使用的是Arduino UNO R3型号开发板,重要参数如下:
- 芯片:基于Atmel公司的ATmega328P单片机
- 晶振:16MHz
- 数字IO:0 - 13,输出数字信号。引脚输出电平电压为5V,最大输出电流为40mA。
- PWM: 3、5、6、9、10、11,带有
~
- 串口:0、1
- PWM: 3、5、6、9、10、11,带有
- 模拟IO:A0 - A5,具有10位数模转换通道,这也是Arduino的一个优势所在,自带ADC。
- 电源:3.3V/5V输出,最大输出电流为150mA
- 供电:建议12V DC口供电
- 下载:烧录程序
- USB:下载接口。
- ICSP:下载接口。
Arduino IDE
以C语言编写程序,同时兼具C++面对对象的思想。由于Arduino IDE具有丰富的库函数,还有许多封装好的模块,所以入门十分简单。IDE界面如下:
界面十分简洁,左上角一键编译上传,右上角附带串口调试工具。
这里给出 Arduino IDE 官网链接。Arduino IDE的安装不是本文的重点,所以不再赘述。
配置开发板及端口
打开Arduino IDE,依次打开工具——开发板——Arduino AVR Boards——Arduino Uno。
设置端口前先将开发板用USB数据线连好,并接到电脑端。依次打开工具——端口——COMx。x为端口号。
硬件介绍
LED介绍
LED的详细介绍请参考另一篇博客《51单片机LED篇》。因为Arduino板载了一个可以控制的LED灯(丝印为L
),所以本文无需外接LED,直接对其进行逻辑控制。
原理图
找到Arduino开发板中丝印为 L L L 的LED,默认正极接在数字IO的13号引脚上,负极接地(当然,板载经过限流电阻)。也就是说,我们只需要操控13号引脚的电平高低,即可控制LED的亮灭。
软件实现
Arduino IDE中的程序可以使用C/C++来书写。
库函数介绍
首先,介绍3个核心库中的函数。详细的移步至官方函数手册。
- 引脚输出输入初始化
void pinMode(uint8_t pin, uint8_t mode)
- pin: 引脚号
- mode: 引脚模式
- 输出: OUTPUT
- 输入: INOUT
- 输入上拉:INPUT_PULLUP
- 数字引脚写入
void digitalWrite(uint8_t pin, uint8_t val)
- pin: 引脚号
- val: 电平高低
- 低电平: LOW
- 高电平: HIGH
- 延时函数
void delay(unsigned long ms)
- ms: 延时毫秒数
程序代码
// 2022.11.12
// Author:Qiu
#define LED_L 13 // 引脚号
#define SPEED 1000 // 控制闪烁间隔1000ms
// 参数初始化,仅执行一次
void setup() {
// 初始化数字引脚13作为输出
pinMode(LED_L, OUTPUT);
}
// 主循环
void loop() {
digitalWrite(LED_L, HIGH); // 向13引脚写入高电平
delay(SPEED); // 等待
digitalWrite(LED_L, LOW); // 向13引脚写入低电平
delay(SPEED); // 等待
}
编译成功后,上传至板子中,实验现象为LED灯以1Hz的频率闪烁。
当然,同样的实现可以在Arduino自带的示例中找到,路径为:文件 - 示例 - Basics - Blink。我建议大家可以自己先实现一遍,毕竟后面我们将会涉及比较复杂的应用,光靠示例是无法满足我们的需求的。
下一篇的目标
我们希望更加高级的控制LED灯,比如,给它加一个物理开关。我们下一篇再见!
总结
通过本章,你学会了如何控制数字IO口输出高低电平,并借助延时函数完成了LED的闪烁实验。这一点非常重要,它将会成为我们未来机械臂中的指示灯。请不要轻视这小小的第一步!
B站:太极创客 ↩︎