ARDUINO入门及其简单实验(7例) (1)1. Arduino硬件开发平台简介 (1)1.1 Arduino的主要特色 (2)1.2 Arduino的硬件接口功能描述 (3)1.3 Arduino的技术性能参数 (3)1.4 电路原理图 (4)2. Arduino软件开发平台简介 (5)2.1 菜单栏 (5)2.2 工具栏 (6)2.3 Arduino 语言简介 (6)3. Arduino开发实例中所用部分器件 (8)1. LED简介 (8)2. 光敏电阻简介 (9)3. 直流电机简介 (9)4. 电位器简介 (10)4. Arduino平台应用开发实例 (10)4.1【实作项目一】利用LED作光敏电阻采样实验 (10)4.2【实作项目二】利用PWM信号控制LED亮度 (12)4.3【实作项目三】单键控制一只LED的亮灭 (15)4.4【实作项目四】利用PWM控制直流电机转速 (17)4.5【实作项目五】利用电位器手控LED亮度 (19)4.6【实作项目六】控制LED明暗交替 (21)4.7【实作项目七】利用光敏电阻控制LED的亮灭 (23)ARDUINO入门及其简单实验(7例)1. Arduino硬件开发平台简介Arduino硬件是一块带有USB的I/O接口板(其中包括13条数字I/O引脚,6通道模拟输出,6通道模拟输入),并且具有类似于Java、C语言的集成开发环境。
Arduino既可以扩展一些外接的电子元器件,例如开关、传感器、LED、直流马达、步进马达或其他输入、输出装置;Arduino也可以独立运行,成为一个可以跟交互软件沟通的接口装置,例如:Flash、Processing、Max/MSP、VVVV或其他互动软件。
Arduino开发环境IDE全部开放源代码,可以供大家免费下载、利用,还可以开发出更多激发人们制作欲望的互动作品。
如图1和图2所示,分别为Arduino硬件平台的实物图和电路布局图。
图1 两款Arduino硬件平台实物图图2 Arduino硬件平台电路布局图1.1 Arduino的主要特色●开放源代码的电路图设计,程序开发环境软件也免费下载,许多现成的成功制作案例也都开放,可依需求自主修改、任意裁剪。
●使用流行的高性价比的单片机(ATmega8、ATmega168或ATmega328)。
●可以采用USB接口供电,不需外接电源。
也可以使用外部接入DC 9V电源适配器供电。
●Arduino支持ISP在线烧写或者升级,可以自行将新的“bootloader(自举程序)”固件烧入单片机芯片。
有了新版bootloader之后,可以通过串口或者USB/RS232线更新固件。
●依据官方免费提供的电路板图和电路原理图(即为Eagle格式PCB和SCH电路图),可以自主修改或者简化Arduino电路,以独立仿制或者改制Arduino开发板。
可以方便地外接各种传感器、各式各样的人机接口器件。
例如,红外线、超音波、热敏电阻、光敏电阻、伺服马达等功能器件。
●应用方面,利用Arduino可以突破以往只能使用鼠标、键盘、CCD等输入装置的互动内容,可以更简单地达成单人或多人游戏互动。
●支持多种互动程序,如:Flash、Processing、Max/Msp、VVVV等。
1.2 Arduino的硬件接口功能描述1.数字输入/输出(Digital I/O)端子0~13(共14个数字输入/输出口DIO)。
2.模数转换(ADC)输入端子0~5(共6个,可做模拟输入口AI)。
3.脉宽调制(PWM)输出(Pin11,Pin10,Pin9,Pin6,Pin5,Pin3)共6个,可做模拟输出口AO。
4.支持USB接头传输数据及供电(可以免用外接电源)。
5.支援串口通信TX/RX端子。
6.支持在线串行烧写(ICSP)功能。
接线端子为6芯的排针。
7.支持外部模数转换(ADC)的电压基准(AREF)端子输入。
8.输入电压:USB接口提供,无须外部供电。
也可由7V~12V DC外部供电。
9.可以向外提供电源电压:DC5V输出。
10.智能核心器件采用的是型号为ATmega328的高性能单片机。
11.Arduino物理尺寸:宽70mm×高54mm。
1.3 Arduino的技术性能参数1.核心器件:AVR系列的ATmega328(运行速度可达20MIPS);2.数字信号I/O接口端子:14(其中6个可做模拟输出接口端子);3.模拟信号输入接口端子:6个;4.数字I/O端子直流驱动电流(最大值):40mA;5.程序存储器Flash容量:32KB(其中2KB用于固化自举程序bootloader);6.数据存储器SRAM容量:1KB;7.永久数据存储器EEPROM容量:512B;8.时钟频率:16MHz;9.工作电压:+5V;10.外部输入电源电压(推荐值):+7V~+12V;11.外部输入电源电压(极限值):+6V≤Vin≤+20V。
1.4 电路原理图最经典的一款Arduino的电路原理图如图3所示。
其电路中的核心芯片为一片ATmega328单片机。
图 3 Arduino电路原理图从图中可以看出,除了核心器件单片机之外,还包含一片FT232(构成USB/UART 的通信转换接口)、一片MC33269稳压器(构成稳压电源电路)、一片LM358和一只MOS晶体管2955(共同构成两路电源输入的自动切换电路)。
对于初学者来说,不需要了解电路板细节,也不需要搞懂单片机,只要记住3个排针插口的局部和用途,即可快速上手实战!2. Arduino软件开发平台简介如图4所示,为Arduino(以V1.0版本为例)软件开发平台的工作界面。
图4 Arduino(V1.0)软件平台2.1 菜单栏(1)File:文件下拉菜单包括的命令有:new新建、open打开、sketchbook程序薄、exampels 示例、close关闭、save保存、print打印、quit退出。
(2)Edit:编辑下拉菜单包括的命令有:Cut剪切、Copy复制、Copy for Forum、Paste粘贴、Select All全选等。
(3)Sketch:程序(4)Tools:工具(5)Help:帮助以上命令的功能及用法跟中文说明大体一致,并附有快捷键使用方法。
2.2 工具栏:校验工具按钮。
实际功能为编译。
:上传工具按钮。
实际功能是把编译成功的机器码程序文件,加载(烧写)到单片机芯片内部的程序存储器中。
:新建项目文件工具按钮。
:打开现有项目文件工具按钮。
:保存当前项目文件工具按钮。
:打开串并口窗口按钮。
2.3 Arduino 语言简介1. 程序总体架构(三个主要部分)①声明变量及接口名称(例如int val;int ledPin = 13;……)。
②void setup()初始化函数。
置于程序的开头部分,每次Arduino加电或者复位,仅被执行一次。
③void loop()主循环函数。
置于setup()函数之后,即初始化之后,loop()让你的程序循环往复、周而复始地被执行。
2. 常用函数①数字I/O类:●pinMode(pin,mode) 数字IO口输入输出模式定义函数,将接口定义为输入或输出接口。
●digitalWrite(pin,value) 数字IO口输出电平定义函数,将数字接口值至高或低、开或关。
●int digitalRead(pin) 数字IO口读输入电平函数,读出数字接口的值,pin表示为0~13。
②模拟I/O类:●int analogRead(pin) 模拟IO口读函数,从指定的模拟接口读取值。
●analogWrite(pin,value) 数字IO口PWM输出函数,给一个接口写入模拟值(输出PWM波)。
③扩展I/O类:●shiftOut(dataPin,clockPin,bitOrder,value) SPI外部IO扩展函数,通常使用带SPI接口的74HC595做8个IO扩展,把资料传给用来延伸数字输出的寄存器,此函数通常使用在延伸数字输出。
●unsigned long pulseIn(pin,value) 脉冲长度记录函数,设定读取脚位状态的持续时间,返回时间参数(μs)。
3. 时间函数●unsigned long millis() 返回时间函数(单位ms),回传单片机开始执行到目前的毫秒数。
该函数是指,当程序运行就开始计时并返回记录的时间参数。
该参数溢出大概需要50天时间。
4. 数学函数●min(x,y) 求最小值,回传两数之间较小者。
●max(x,y) 求最大值,回传两数之间较大者。
5. 随机数函数●randomSeed(seed) 随机种子数设置函数,使得随机数发生器产生的随机数更加不可预测。
●long random(max) 随机数返回函数,返回数据大于等于0,小于max。
●long random(min,max) 随机数返回函数,返回数据大于等于min,小于max。
6. 中断使能函数●interrupts() 使能中断函数。
放开中断功能。
●noInterrupts() 禁止中断函数。
关闭中断功能。
7. 串口收发函数●Serial.begin(speed) 启用串口和定义波特率函数。
设置每秒串行传输数据的速率(波特率),即指定Arduino与PC微机交换信息的速率,通常选用9600bps(比特/秒)。
●Serial.print(data) 串行端口数据输出函数。
将输出结果显示于PC微机端的“串口通信窗口”里。
例如,Serial.print(数据),默认为十进制数据,等效于Serial.print(数据,DEC)。
●Serial.println(data) 自动换行的串行端口输出数据函数。
在以上函数基础上增加了回车和换行功能。
●int Serial.read() 串行端口数据输入函数。
读串口并返回收到的一个字节数据。
3. Arduino开发实例中所用部分器件首先对于本文后面制作实例中所用到的主要器件进行简介。
1. LED简介LED(Light Emitting Diode)是发光二极管的简称。
这种半导体元件一般是作为指示灯、显示板,它不但能够高效率地直接将电能转化为光能,而且拥有最长达数万小时的使用寿命,同时具备不像传统灯泡易碎并省电等优点。
图1为LED实物图,图2为LED内部结构。
图1 LED实物图片图2 LED内部结构LED还可分为普通单色LED(红、绿、黄、蓝、白)、高亮度LED、超高亮度LED、变色LED、闪烁LED、电压控制型LED、红外LED和负阻LED等。
LED特点:◆工作电压低,工作电流很小;◆适合于易变的环境,对环境无污染;◆稳定性好,可靠性高,寿命长;◆价格比较低廉,性价比高。