Arduino:

简介:

Arduino是一款便捷灵活、方便上手开源电子原型平台。包含硬件和软件(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括 Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis 和 Nicholas Zambetti 等。

特点:

Arduino IDE可以在 Windows、Mac OS、Linux 三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发。对于初学者来说,它极易掌控,有足够灵活性不需要太多基础就可以开发。我初次接触 Arduino 时,仅仅连 MCU 是什么也不知道,但还是开发出了不少东西。不够有一定基础也是非常有必要的,在开发复杂功能时可以少走弯路。(亲身经历)

主板:

目前 Arduino 的主板型号有很多,主要有:

Arduino Uno

Arduino Nano

Arduino LilyPad

Arduino Mega 2560

Arduino Ethernet

Arduino Due

Arduino Leonardo

ArduinoYún

扩展版也有不少:

Arduino GSM Shield

Arduino Ethernet Shield

Arduino WiFi Shield

Arduino Wireless SD Shield

Arduino USB Host Shield

Arduino Motor Shield

Arduino Wireless Proto Shield

Arduino Proto Shield


使用资料:

Arduino基础入门篇28—舵机控制 - 简书 (jianshu.com)

Arduino基础入门篇26—步进电机 - 简书 (jianshu.com)


实践:

刚开始时最好先了解一下 C 语言(其他也行),但如果0基础,需要注意每一个语句的作用和写法。这里只会讲解一些核心函数,语法不会详细讲解(如:while循环,for循环等)。

搭建环境:

这里使用 Arduino IDE 作为开发环境,Arduino UNO 作为开发板。

Arduino IDE 下载:Arduino - Windows

Arduino UNO:

软件下载完毕后,将开发板与电脑使用 USB 线连接,如果在设备管理器中未识别成功,考虑安装驱动,如果失败,则上网查找 CH340 驱动下载。

认识开发板:

Blink示例:

这里列举点灯例程(硬件世界的 Hello World):

1.将1个LED长引脚(正极)连接220Ω电阻后连接 Arduino 板上的数字脚0

2.将此LED灯短引脚(负极)连接 Arduino 板上的 GND

3.复制此代码,上传,观察效果。

注意" () ; , "等符号为英文符号。(如果硬件上不想接线,可以将代码中0号引脚改为13号,使用板载 LED )

可以看见 LED 以 1Hz 频率闪烁。

程序解读:

其中“ void setup() ”函数在程序开始执行时只调用一次,使用它初始化变量、初始化外设等。

这里使用“ pinMode ”函数将0号引脚配置为输出引脚

而“ void loop() ”函数会不断重复执行

在这里,使用“ digitalWrite “函数将0号引脚设置为高电平(5V,HIGH),一秒后(delay 函数)设置为低电平(0V,LOW),等待一秒后循环


ADC、PWM示例:

-ADC ( Analog to Digital Converter ):

模拟数字转换器即 A/D 转换器,或简称 ADC ,通常是指一个将模拟信号转变为数字信号的电子元件。

-PWM ( Pulse Width Modulation ):

脉宽调制是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)

 

以下是 Arduino 读取 A3 引脚模拟信号并以 PWM 形式对 LED 调光的例程:

1.将1个LED长引脚(正极)连接220Ω电阻后连接 Arduino 板上的引脚9

2.将此LED灯短引脚(负极)连接 Arduino 板上的 GND

3.将一个电位器阻值不固定的两端分别接 A3GND

4.复制此代码,上传,旋转电位器,观察效果。

可以看见随着电位器旋转, LED 亮度不断变化。如果有示波器,可以发现 PWM 波频率固定在 430Hz。

程序解读:

analogRead() 和 analogWrite() 为核心函数。


串行通讯:

所有 Arduino 控制器都有至少一个串行端口(也称为UART或者USART)。个人电脑可以通过 USB 端口与Arduino的引脚0(RX)和引脚1(TX) 进行通信。你可以通过 Arduino 开发环境软件中的串口监视器来与 Arduino 控制器进行串口通信。

这里展示最基本示例:

可以在串口监视器里看见打印的数据。

程序解读:

Serial.print() , Serial.println() 用于打印数据,millis() 用于获取 Arduino 开机后运行的时间长度。

delayMicroseconds() 与 delay() 函数都可用于暂停程序运行。不同的是,delayMicroseconds() 的参数单位是微秒


使用库:

通过的使用可以拓展 Arduino 开发板的功能。因为有了库,我们可以很轻松的实现 Arduino 与外部硬件的协作或进行数据通讯。

Arduino IDE 预装有一系列标准库文件,同时您也可以自己将第三方库(如:网上下载的开源库)安装导入Arduino IDE ,甚至您自己也可以建立库并导入 Arduino IDE 。

Arduino标准库有:

接下来我将依次给出教程:

EEPROM:

EEPROM:Electrically Erasable, Programmable Read-Only Memory 。电可擦除可编程只读存储器。

简单来说 EEPROM 就像是一个硬盘,所以即使掉电,存放在 EEPROM 中的数据也可以保存下来,方便再次上电的时候进行读取操作。

ATmega328 内部具有 1kB 的 EEPROM 。

注意:EEPROM的 写入/擦除 寿命为100000次左右。

示例:

1.硬件上无需连线。

2.上传代码。

 

Servo:

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。

舵机安装了一个电位器(或其它角度传感器)检测输出轴转动角度,控制板根据电位器的信息能比较精确的控制和保持输出轴的角度。

舵机转动的角度是通过调节 PWM 信号的占空比来实现的。标准的PWM信号的周期固定为20ms,理论上脉宽分布应该在1ms到2ms之间,实际上可由0.5ms到2.5ms之间,脉宽与转角0°—180°相对应。

舵机一般都外接三根线,分别用棕、红、橙三种颜色进行区分,由于品牌不同,颜色也会有所差异,棕色为接地线,红色为电源正极线,橙色为信号线

示例:

1.控制线接9。剩余两根接电源。

2.上传代码。

舵机在0°和180°间不断转动。

 

Stepper:

步进电机是一种将电脉冲转化为角位移的执行机构。

这里使用的步进电机型号为28BYJ-481相励磁方式驱动,通过给ABCD四相依次通电来实现转自不停转动。控制板型号为 ULN2003 驱动板。

示例:

1.ULN2003驱动板上IN1、IN2、IN3、IN4分别连接UNO开发板的数字引脚2,3,4,5;

驱动板电源输入+、-引脚分别连接UNO开发板的5V、GND。

2.上传代码。

可见电机180°正反转。

 

SD:

上文讲到数据可以存储在 EEPROM 中,但如果要存储大量数据,Arduino 1Kb 的存储空间就力不从心了,但是我们可以挂载 SD 卡,拓展出大量空间

这是这里所用的 Micro SD Card 模块:

还没写完……