关键词:电子设计; 控制电路; Arduino; 引领
Arduino是由米兰交互设计学院的两位老师David Cuartielles和Massimo Banzi于2005年1月联合创建的。 它是一个基于开源代码的简单I/O平台。 该平台由两部分组成:硬件(包括微处理器、电路板等)和软件(编程接口和语言)。 该平台的两个部分都是开源的,如果您愿意,您可以下载 Arduino 的图表,购买所需的所有单独部件,切割电路板并制作一个。 Arduino有类似java和C语言的开发环境。 您可以快速使用Arduino语言和Flash或Processing等软件完成交互作品。 Arduino 可以使用已开发的电子元件,例如开关、传感器或其他控制器、LED、步进电机或其他输入/输出设备。 同时,Arduino还可以成为与软件通信的独立平台,例如flash、Processing、Max/MSP或其他交互软件。
1 功能特点 Arduino在开发之初就明确了其应用环境,并设计了开源、开放的平台,以方便其二次开发。 Arduino的主要功能特点如下:
1)开源电路图设计。 程序开发接口免费下载,您也可以根据需要进行修改。
2)使用低价微处理器控制器(ATmega8或ATmega128)。 可以通过USB接口供电,无需外接电源,也可以使用外部9VDC输入。
3) 支持ISP在线烧录器将Bootloader固件烧录到芯片中。 Arduino控制器有一个Bootloader程序,它是系统上电后运行的第一段代码。 它就像 PC BIOS 中的程序一样。 它在启动时执行自检、配置端口等。 当然,微控制器依赖于编程熔丝位。 要设置上电后的引导区,可以使用该程序直接将串口发来的程序存入Flash区。 因此,在使用Arduino编译环境下载程序时,应先复位单片机,启动Boodoader程序,引导串口发来的程序顺利写入Flash区域。 Flash可以重复编程,所以更新软件非常方便。 借助Bootloader,可以通过串口或USB转RS232线更新固件。
4)根据官方的PCB和SCH电路图,可以简化Arduino模块,完成微处理器控制的独立操作。
5)可方便连接传感器及各种电子元件,如红外、超声波、热敏电阻、光敏电阻、伺服电机等。
6)支持多种交互程序,如Flash、Max/MSP、VVVV、PureData、C、Processin等。使用低价微处理器控制器。
7)在应用方面,使用hrduino可以突破以往设备只能使用鼠标、键盘、CCD等输入设备的交互内容,更容易实现单人或多人游戏交互。 Arduino的功能特点使其应用越来越广泛。
2 基本结构 Arduino系统针对不同的应用环境开发了不同的版本。 本文以“Arduino Duemilanove”版本为例。 该版本于 2009 年开发,基于 ATm ega328 微控制器板。 它可以自动选择使用哪种电源。 只需使用 USB 电缆将其连接到计算机或使用电源适配器为其供电,即可开始使用。 Arduino Duemilanove的外部结构如图1所示。
1)1路9V直流输入,为Arduino板提供外部电源输出,使Arduino控制板能够驱动舵机等大功率外部设备;
2)1个USB口,通过该口连接电脑,Arduino IDE将用户编写的控制程序上传到控制板。 同时还可以通过该端口给电路板供电,驱动低功耗的外部设备;
3)14个数字输入/输出端子,其中端口0(RX)和1(TX)分别连接主控芯片的串行引脚,用于接收和发送TTL串行数据。 其中2、3口可以接收外部信号,实现外部中断功能; 端口3、5、6、9、10、11作为PWM端口,可用于电机PWM调速[5]或音乐播放; 端口10(SS)、11(MOSI)、12(MISO)和13(SCK)在SPI模块库的支持下可以提供SPI通信模式; LED 指示灯内部连接到端口 13。随着引脚 13 上的电平变化,开和关;
4)6个模拟量输入/输出端子,其中端口4(SDA)和端口5(SCL)可以实现I2C通信;
5)1路5V直流输出,1路3.3V直流输出,可为其他电路增加3.3V、5V直流电源;
6)1个复位接口。
Arduino系统是基于微控制器开发的,使用了大量通用、标准的电子元件。 整个设计,包括硬件和软件以及代码均以开源方式发布,因此采购成本较低。 在各种电子制作竞赛、电子艺术品、创意设计等中越来越多地使用Arduino作为开发平台。
3 应用 Arduino系统广泛应用于电子设计等方面。 本文以简单的LEO控制为例来说明Arduino系统的使用。
在LEO控制系统中,开关S用于控制LED的亮灭。 当开关S闭合时,LED发光,当开关S断开时,LED熄灭。 因此,在设计系统时,数字输入/输出端口的两个引脚分别用于连接LED和S开关。 电路如图2所示。
Arduino语言基于C/C++,实际上是基础C语言。 Arduino语言将AVR微控制器(微控制器)相关的一些参数设置模块化,包括EEPROM、以太网、LED矩阵、舵机、Stepper和TWI/I2C控制库,不需要用户直接与底层系统打交道,可以提高应用开发效率。 流程如图3所示。
Arduino语言是以setup()和loop()为主体的程序结构。 setup()用于初始化变量、引脚模式、调用库函数等。该函数只运行一次,其功能类似于C语言中的“main()”。 Loop()函数是一个循环函数,函数内的语句会被重复执行。 假设通过D10引脚控制LED,D2引脚连接控制开关S。主要代码如下:
在Setup函数中,pinMode函数是数字I/O端口输入输出定义函数,可以确定Arduino上0~13端口的输入输出状态。 INPUT和OUTPUT分别代表输出和输出模式。 循环函数中,digitalRead为数字I/O口读取电平值函数,digitalWrite为数字I/O口输出电平定义函数。 本例中,在setup函数中,将端口2定义为数字信号输入端口,将端口10定义为数字信号输出端口; 在该函数循环中,首先读取端口2的电平信号,然后根据该端口的电平值设置输出端口10的电平值。
通过Arduino IDE将编写好的控制代码上传到控制板后,关闭或打开开关S,您将观察LED的亮灭。
4 结论 Arduino系统基于C/C++,即基础C语言。 Arduino系统仅功能化一些与AVR单片机(微控制器)相关的寄存器参数设置,即使你对AVR单片机了解不多。 朋友们可以轻松上手,设计出各种实用的电路开发系统。