1、第1页,共40页。Arduino开发平台介绍开发平台介绍1 Arduino开发基础操作开发基础操作2 开发实例开发实例(用用Arduino控制一个舵机)控制一个舵机)3第2页,共40页。u1.1.什么是什么是ArduinoArduino?uArduinoArduino项目起源于意大利,该名字在意大利是男性用名,项目起源于意大利,该名字在意大利是男性用名,音译为音译为“阿尔杜伊诺阿尔杜伊诺”,意思为,意思为“强壮的朋友强壮的朋友”。ArduinoArduino的出现并不是偶然,的出现并不是偶然,ArduinoArduino最初是为一些非电子最初是为一些非电子工程专业的学生设计的。设计者最初为了寻
2、求一个廉价工程专业的学生设计的。设计者最初为了寻求一个廉价好用的微控制器开发板从而决定自己动手制作开发板,好用的微控制器开发板从而决定自己动手制作开发板,ArduinoArduino一经推出,因其开源、廉价、简单易懂的特性迅一经推出,因其开源、廉价、简单易懂的特性迅速受到了广大电子迷的喜爱和推崇。几乎任何人,即便速受到了广大电子迷的喜爱和推崇。几乎任何人,即便不懂电脑编程,利用这个开发板也能用不懂电脑编程,利用这个开发板也能用ArduinoArduino做出炫酷做出炫酷有趣的东西,比如对感测器探测做出一些回应、闪烁灯光、有趣的东西,比如对感测器探测做出一些回应、闪烁灯光、控制马达等控制马达等。
3、第3页,共40页。u1.1.什么是什么是ArduinoArduino?uArduinoArduino应用(视频)应用(视频)第4页,共40页。uArduinoArduino是一块基于开放原始代码的是一块基于开放原始代码的Simple i/oSimple i/o平台,并且平台,并且具有开发语言和开发环境都很简单、易理解的特点。让具有开发语言和开发环境都很简单、易理解的特点。让您可以快速使用您可以快速使用ArduinoArduino做出有趣的东西。做出有趣的东西。它是一个能它是一个能够用来感应和控制现实物理世界的一套工具。够用来感应和控制现实物理世界的一套工具。它由一个它由一个基于单片机并且开放源
4、码的基于单片机并且开放源码的硬件平台硬件平台,和一套为,和一套为ArduinoArduino板编写程序的板编写程序的开发环境开发环境组成。组成。第5页,共40页。uArduinoArduino是一个加载了微控制器的电路板,更是一个包含是一个加载了微控制器的电路板,更是一个包含了硬件和软件的开发平台。了硬件和软件的开发平台。第6页,共40页。uArduinoArduino硬件是一块完整的电路板,包含一块微控制器硬件是一块完整的电路板,包含一块微控制器ICIC,一组排母用于连接到其它电路、若干个稳压器一组排母用于连接到其它电路、若干个稳压器ICIC用于给整个电用于给整个电路提供合适的电源,一个路提
5、供合适的电源,一个USBUSB接口用于连接计算机。接口用于连接计算机。第7页,共40页。uArduinoArduino软件是一个编程的开发软件是一个编程的开发环境。这个软件包含一个文本编环境。这个软件包含一个文本编辑器,可以在文本编辑编辑器中辑器,可以在文本编辑编辑器中编写并修改程序,软件还包含一编写并修改程序,软件还包含一个自动上传器,可以将编写完成个自动上传器,可以将编写完成的程序发送到的程序发送到ArduinoArduino开发板。开发板。第8页,共40页。uArduinoArduino开发板上需要关注的重点:开发板上需要关注的重点:u1.1.核心微控制器:核心微控制器:Arduino
6、UnoArduino Uno使用的是使用的是Atmel AVR Atmel AVR ATmega328PATmega328P微控制器。微控制器。第9页,共40页。uArduinoArduino开发板上需要关注的重点:开发板上需要关注的重点:u2.2.外部连接排母。与外部交互的接口。外部连接排母。与外部交互的接口。UnoUno一共有一共有2828个。个。分成三组:分成三组:u(1 1)电源)电源u(2 2)模拟输入)模拟输入u(3 3)数字输入)数字输入/输出输出第10页,共40页。uArduinoArduino开发板上需要关注的重点:开发板上需要关注的重点:u3.USB3.USB接口。接口。三
7、个重要功能:三个重要功能:u(1 1)程序上传)程序上传u(2 2)程序调试()程序调试(DebugDebug)u(3 3)临时供电)临时供电第11页,共40页。uArduinoArduino开发板上需要关注的重点:开发板上需要关注的重点:u4.4.可用内存。可用内存。u(1 1)Flash Flash内存:用于写入和保存数据,内存:用于写入和保存数据,ATmega328ATmega328提提供供32K Flash32K Flash内存,其中内存,其中0.5K0.5K用于保存特殊程序用于保存特殊程序BootloaderBootloader。u(2 2)静态)静态RAMRAM:运行时临时储存数据
8、。大小为:运行时临时储存数据。大小为2K2K。RAMRAM中的中的数据掉电之后丢失。数据掉电之后丢失。u(3 3)EEPROM(EEPROM(电可擦可编程只读存储器):用来保存程序的电可擦可编程只读存储器):用来保存程序的额外数据,如数学公式的值,或者额外数据,如数学公式的值,或者ArduinoArduino读取到的传感器读取到的传感器读数。掉电之后,它储存的数据不会丢失。读数。掉电之后,它储存的数据不会丢失。第12页,共40页。uArduinoArduino开发板上需要关注的重点:开发板上需要关注的重点:u5.Arduino5.Arduino工作速度。工作速度。u所有的微控制器,包括所有的微
9、控制器,包括ArduinoArduino,都使用一个系统时钟产生,都使用一个系统时钟产生的脉冲来进行工作。大部分的脉冲来进行工作。大部分ArduinoArduino的工作速度为的工作速度为16MHz,16MHz,也也就是说每秒能处理就是说每秒能处理16001600万条指令。万条指令。第13页,共40页。Arduino开发平台介绍开发平台介绍1 Arduino开发基础操作开发基础操作2 开发实例开发实例(用用Arduino控制一个舵机)控制一个舵机)3第14页,共40页。u2.12.1搭建开发环境搭建开发环境u2.1.1 2.1.1 交叉编译:交叉编译:就是在一个平台上生成另一个平台上可以执行的
10、代码。就是在一个平台上生成另一个平台上可以执行的代码。开发人员在电脑上将程序写好,编译生成单片机执行的程开发人员在电脑上将程序写好,编译生成单片机执行的程序,就是一个交叉编译的过程。很多嵌入式系统需要从一序,就是一个交叉编译的过程。很多嵌入式系统需要从一台计算机上编程,将写好的程序下载到开发板中进行测试台计算机上编程,将写好的程序下载到开发板中进行测试和实际运行。因此跨平台开发在嵌入式系统软件开发中很和实际运行。因此跨平台开发在嵌入式系统软件开发中很常见。因为单片机上不具备直接编程的环境,因此利用常见。因为单片机上不具备直接编程的环境,因此利用ArduinoArduino编程需要两台计算机:编
11、程需要两台计算机:ArduinoArduino单片机和单片机和PCPC。第15页,共40页。u2.12.1搭建开发环境搭建开发环境u2.1.2 2.1.2 在在windowswindows上安装上安装IDEIDE 给给ArduinoArduino编程需要用到编程需要用到IDEIDE(集成开发环境),这是(集成开发环境),这是一款免费的软件。在这款软件上编程需要使用一款免费的软件。在这款软件上编程需要使用ArduinoArduino的语的语言,这是一种解释型语言,写好的程序被称为言,这是一种解释型语言,写好的程序被称为sketchsketch,编,编译通过后就可以下载到开发板中。在译通过后就可以
12、下载到开发板中。在ArduinoArduino的官方网站的官方网站上可以下载这款官方设计的软件及源码、教程和文档。上可以下载这款官方设计的软件及源码、教程和文档。第16页,共40页。u2.12.1搭建开发环境搭建开发环境u2.1.2 2.1.2 在在windowswindows上安装上安装IDE(IDE(注意注意USBUSB驱动,驱动,Java Java Framework,Framework,查看端口,选择主板类型查看端口,选择主板类型)第17页,共40页。u2.12.1搭建开发环境搭建开发环境u2.1.2 2.1.2 在在windowswindows上安装上安装IDEIDE第18页,共40
13、页。u2.2 2.2 常用的常用的Arduino Arduino 第三方软件介绍第三方软件介绍u2.2.1 2.2.1 图形化编程软件图形化编程软件ArduBlock ArduBlock 第19页,共40页。u2.2 2.2 常用的常用的Arduino Arduino 第三方软件介绍第三方软件介绍u2.2.2 Arduino 2.2.2 Arduino 仿真软件仿真软件Virtual breadboard Virtual breadboard 第20页,共40页。u2.2 2.2 常用的常用的Arduino Arduino 第三方软件介绍第三方软件介绍u2.2.2 Arduino 2.2.2
14、Arduino 仿真软件仿真软件Virtual breadboard Virtual breadboard Virtual breadboard Virtual breadboard 是一款专门的是一款专门的Arduino Arduino 仿真软仿真软件,简称件,简称VBBVBB,中文名为,中文名为“虚拟面包板虚拟面包板”。这款软件主要。这款软件主要通过单片机实现嵌入式软件的模拟和开发环境,它不但通过单片机实现嵌入式软件的模拟和开发环境,它不但包括了所有包括了所有Arduino Arduino 的样例电路,可以实现对面包板电路的的样例电路,可以实现对面包板电路的设计和布置,非常直观地显示出面包
15、板电路,还可实现对程设计和布置,非常直观地显示出面包板电路,还可实现对程序的仿真调试。序的仿真调试。第21页,共40页。u2.2 2.2 常用的常用的Arduino Arduino 第三方软件介绍第三方软件介绍u2.2.2 Arduino 2.2.2 Arduino 仿真软件仿真软件Virtual breadboard Virtual breadboard VBB VBB 可以模拟可以模拟Arduino Arduino 连接各种电子模块,例如液晶屏、连接各种电子模块,例如液晶屏、舵机、逻辑数字电路、各种传感器以及其他的输入舵机、逻辑数字电路、各种传感器以及其他的输入/输出设备。输出设备。这些部
16、件都可以直接使用,也可以通过组合,设计出更这些部件都可以直接使用,也可以通过组合,设计出更复杂的电路和模块。复杂的电路和模块。使用使用VBB VBB 可以直观的了解电路设计,能够在设计出原可以直观的了解电路设计,能够在设计出原型后快速实现。而且虚拟面板具有可视性和模拟交互效果,型后快速实现。而且虚拟面板具有可视性和模拟交互效果,可以实时地在软件上看到可以实时地在软件上看到LEDLED、LCD LCD 等可视模块的变化,同等可视模块的变化,同时可以确保安全,因为不是实物操作不会引起触电或者烧时可以确保安全,因为不是实物操作不会引起触电或者烧毁芯片等问题。毁芯片等问题。第22页,共40页。u2.3
17、 2.3 第一个程序第一个程序u2.3.1 LED2.3.1 LED闪光灯闪光灯 编写第一个程序控制开发板上的编写第一个程序控制开发板上的LEDLED灯闪烁,修改参数灯闪烁,修改参数调整闪烁时间。(调整闪烁时间。(Arduino IDEArduino IDE和和blinkblink)第23页,共40页。u2.3 2.3 第一个程序第一个程序u2.3.1 LED2.3.1 LED闪光灯程序解析闪光灯程序解析 /*Blink Blink Turns on an LED on for one second,then off for one Turns on an LED on for one sec
18、ond,then off for one second,repeatedly.second,repeatedly.*/注释,并非程序的内容注释,并非程序的内容第24页,共40页。u2.3 2.3 第一个程序第一个程序u2.3.1 LED2.3.1 LED闪光灯程序解析闪光灯程序解析 int LEDPin=13;/declare variableint LEDPin=13;/declare variable声明变量声明变量第25页,共40页。u2.3 2.3 第一个程序第一个程序u2.3.1 LED2.3.1 LED闪光灯程序解析闪光灯程序解析 /the setup function runs
19、once when you press/the setup function runs once when you press reset or power the boardreset or power the boardvoid setup()void setup()/initialize digital pin13 as an output./initialize digital pin13 as an output.pinMode(LEDPin,OUTPUT);pinMode(LEDPin,OUTPUT);设置数字引脚设置数字引脚1313为输出,为输出,INPUTINPUT和和OUTP
20、UTOUTPUT是是Arduino IDEArduino IDE已经预先定义好的变量已经预先定义好的变量第26页,共40页。u2.3 2.3 第一个程序第一个程序u2.3.1 LED2.3.1 LED闪光灯程序解析闪光灯程序解析 /the loop function runs over and over again/the loop function runs over and over again foreverforevervoid loop()void loop()digitalWrite(LEDPin,HIGH);/set the led on digitalWrite(LEDPin,
21、HIGH);/set the led on delay(1000)/wait for a second delay(1000)/wait for a second digitalWrite(LEDPin,LOW);/set the led off digitalWrite(LEDPin,LOW);/set the led off delay(1000);/wait for a second delay(1000);/wait for a second digitalWritedigitalWrite是内建函数,改变数字引脚输出状态是是内建函数,改变数字引脚输出状态是ONON还是还是OFF,OF
22、F,它需要两个参数。它需要两个参数。DelayDelay是内建的延迟函数。是内建的延迟函数。第27页,共40页。u2.3.32.3.3函数库和程序架构介绍函数库和程序架构介绍 Arduino Arduino 程序的架构大体可分为程序的架构大体可分为3 3 个部分。个部分。(1 1)声明变量及接口的名称。)声明变量及接口的名称。(2 2)setup()setup()。在。在Arduino Arduino 程序运行时首先要调用程序运行时首先要调用setup()setup()函数,用于初始化变量、设置针脚的输出函数,用于初始化变量、设置针脚的输出/输入类型、配置输入类型、配置串口、引入类库文件等等。
23、每次串口、引入类库文件等等。每次Arduino Arduino 上电或重启后,上电或重启后,setup()setup()函数只运行一次。函数只运行一次。(3 3)loop()loop()。在。在setup()setup()函数中初始化和定义变量,然后函数中初始化和定义变量,然后执行执行loop()loop()函数。顾名思义,该函数在程序运行过程中函数。顾名思义,该函数在程序运行过程中不断地循环,根据反馈,相应地改变执行情况。通过该不断地循环,根据反馈,相应地改变执行情况。通过该函数动态控制函数动态控制Arduino Arduino 主控板。主控板。第28页,共40页。Arduino开发平台介绍
24、开发平台介绍1 Arduino开发基础操作开发基础操作2 开发实例开发实例(用用Arduino控制一个舵机)控制一个舵机)3第29页,共40页。u3 3 用用ArduinoArduino控制一个舵机控制一个舵机u3.1 3.1 舵机基本工作原理舵机基本工作原理 舵机是一种位置伺服的驱动器,主要是由外壳、电舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由单片机发出信号给舵机,与舵机内部的基准信原理是由单片机发出信号给舵机,与舵机内部的基准信号比较,获得电压差输出,驱动无核心马达开始转动,号比较,获
25、得电压差输出,驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位,此过程中电机通过级联信号,判断是否已经到达定位,此过程中电机通过级联减速齿轮带动电位器旋转,使得电压差为减速齿轮带动电位器旋转,使得电压差为0 0,电机停止转,电机停止转动。舵适用于那些需要角度不断变化并可以保持的控制系动。舵适用于那些需要角度不断变化并可以保持的控制系统。统。第30页,共40页。uArduinoArduino开发板上需要关注的重点:开发板上需要关注的重点:u1.1.核心微控制器:核心微控制器:Arduino UnoA
26、rduino Uno使用的是使用的是Atmel AVR Atmel AVR ATmega328PATmega328P微控制器。微控制器。第31页,共40页。u3.1 3.1 舵机有很多规格,但所有的舵机都有外接三根线,舵机有很多规格,但所有的舵机都有外接三根线,分别用棕、红、橙三种颜色进行区分,由于舵机品牌不分别用棕、红、橙三种颜色进行区分,由于舵机品牌不同,颜色也会有所差异,棕色为接地线,红色为电源正同,颜色也会有所差异,棕色为接地线,红色为电源正极线,橙色为信号线。极线,橙色为信号线。第32页,共40页。u3.13.1舵机的转动的角度是通过调节舵机的转动的角度是通过调节PWMPWM(脉冲宽
27、度调制)信号的(脉冲宽度调制)信号的占空比来实现的,由于舵机牌子不同,对于同一信号,不同牌占空比来实现的,由于舵机牌子不同,对于同一信号,不同牌子的舵机旋转的角度也会有所不同。子的舵机旋转的角度也会有所不同。第33页,共40页。第34页,共40页。这是这是SketchSketch源码:源码:u#include#include uServo duoji;Servo duoji;uvoid setup()void setup()u duoji.attach(9);duoji.attach(9);u 第35页,共40页。uvoid loop()void loop()u duoji.write(90)
28、;duoji.write(90);u delay(2000);delay(2000);u duoji.write(180);duoji.write(180);u delay(2000);delay(2000);u duoji.write(0);duoji.write(0);u delay(2000);delay(2000);u 第36页,共40页。SketchSketch分析:分析:这个这个SketchSketch精悍,它的工作原理如下:精悍,它的工作原理如下:u#include#include SketchSketch第一行指向第一行指向ArduinoArduino的一个库文件的一个库文件,
29、Servo,Servo库文件提供了库文件提供了专门用于操作舵机的指令集。库文件可以极大的简化编程专门用于操作舵机的指令集。库文件可以极大的简化编程任务。任务。第37页,共40页。SketchSketch分析:分析:这个这个SketchSketch精悍,它的工作原理如下:精悍,它的工作原理如下:u Servo duoji;Servo duoji;使用使用ServoServo类创建一个对象类创建一个对象duoji.duoji.编程语言中,类是指一个编程语言中,类是指一个封装了数据的封包,包含了对这个数据进行处理的各种机封装了数据的封包,包含了对这个数据进行处理的各种机制。(举例)制。(举例)第38
30、页,共40页。SketchSketch分析:分析:这个这个SketchSketch精悍,它的工作原理如下:精悍,它的工作原理如下:u void setup()void setup()u duoji.attach(9);duoji.attach(9);u Attach Attach是一个方法,可以被用于是一个方法,可以被用于duojiduoji对象。在这个例子对象。在这个例子中,中,attachattach告诉告诉ArduinoArduino主板,将舵机连接到数字引脚主板,将舵机连接到数字引脚9 9。第39页,共40页。SketchSketch分析:分析:uvoid loop()void loop()u duoji.write(90);duoji.write(90);u delay(2000);delay(2000);u duoji.write(180);duoji.write(180);u delay(2000);delay(2000);u duoji.write(0);duoji.write(0);u delay(2000);delay(2000);u Write Write是另一个方法,指示舵机按照参数旋转。参数范围是另一个方法,指示舵机按照参数旋转。参数范围为为0 0180180。第40页,共40页。