首页 arduino基础入门教程

arduino基础入门教程

举报
开通vip

arduino基础入门教程第1章进入Arduino的世界欢迎来到Arduino的世界!Arduino是一个开源的开发平台,在全世界范围内成千上万的人正在用它开发制作一个又一个电子产品,这些电子产品包括从平时生活的小物件到时下流行的3D打印机,它降低了电子开发的门槛,即使是从零开始的入门者也能迅速上手,制作有趣的东西,这便是开源Arduino的魅力。通过本书的介绍,读者对Arduino会有一个更全面的认识。本章知识点:Arduino的起源与发展Arduino的特点Arduino开发板简介Arduino的未来展望1.1什么是Arduin...

arduino基础入门教程
第1章进入Arduino的世界欢迎来到Arduino的世界!Arduino是一个开源的开发平台,在全世界范围内成千上万的人正在用它开发制作一个又一个电子产品,这些电子产品包括从平时生活的小物件到时下流行的3D打印机,它降低了电子开发的门槛,即使是从零开始的入门者也能迅速上手,制作有趣的东西,这便是开源Arduino的魅力。通过本书的介绍,读者对Arduino会有一个更全面的认识。本章 知识点 高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载 :Arduino的起源与发展Arduino的特点Arduino开发板简介Arduino的未来展望1.1什么是Arduino什么是Arduino?相信很多读者会有这个疑问,也需要一个全面而准确的答案。不仅是读者,很多使用Arduino的人也许对这个问题都难以给出一个准确的说法,甚至认为手中的开发板就是Arduino,其实这并不准确。那么,Arduino究竟该如何理解呢?1.1.1Arduino不只是电路板Arduino是一种开源的电子平台,该平台最初主要基于AVR单片机的微控制器[1]和相应的开发软件,目前在国内正受到电子发烧友的广泛关注。自从2005年Arduino腾空出世以来,其硬件和开发环境一直进行着更新迭代。现在Arduino已经有将近十年的发展历史,因此市场上称为Arduino的电路板已经有各式各样的版本了。Arduino开发团队正式发布的是ArduinoUno和ArduinoMega2560,如图1-1和图1-2所示。[1]关于AVR单片机的内容会在第3章进行介绍。Arduino开发从零开始学·2·图1-1ArduinoUnoR3图1-2ArduinoMega2560R3图1-1和图1-2所示的开发板就是所谓的ArduinoI/O印刷电路板(PrintedCircuitBoard,PCB)。Arduino项目起源于意大利,该名字在意大利是男性用名,音译为“阿尔杜伊诺”,意思为“强壮的朋友”,通常作为专有名词,在拼写时首字母需要大写。其创始团队成员包括:MassimoBanzi、DavidCuartielles、TomIgoe、GianlucaMartino、DavidMellis和NicholasZambetti6人。Arduino的出现并不是偶然,Arduino最初是为一些非电子工程专业的学生 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 的。设计者最初为了寻求一个廉价好用的微控制器开发板从而决定自己动手制作开发板,Arduino一经推出,因其开源、廉价、简单易懂的特性迅速受到了广大电子迷的喜爱和推崇。几乎任何人,即便不懂电脑编程,利用这个开发板也能用Arduino做出炫酷有趣的东西,比如对感测器探测做出一些回应、闪烁灯光、控制马达等。Arduino的硬件设计电路和软件都可以在官方网站上获得,正式的制作商是意大利的SmartProjects(www.smartprj.com),许多制造商也在生产和销售他们自己的与Arduino兼容的电路板和扩展板,但是由Arduino团队设计和支持的产品需要始终保留着Arduino的名字。所以,Arduino更加准确的说法是一个包含硬件和软件的电子开发平台,具有互助和奉献的开源精神以及团队力量。1.1.2Arduino程序的开发过程由于Arduino主要是为了非电子专业和业余爱好者使用而设计的,所以Arduino被设计成一个小型控制器的形式,通过连接到计算机进行控制。Arduino开发过程是:(1)开发者设计并连接好电路;(2)将电路连接到计算机上进行编程;(3)将编译通过的程序下载到控制板中进行观测;(4)最后不断修改代码进行调试以达到预期效果。进入Arduino的世界第1章·3·1.2为什么要使用Arduino在嵌入式开发中,根据不同的功能开发者会用到各种不同的开发平台。而Arduino作为新兴开发平台,在短时间内受到很多人的欢迎和使用,这跟其设计的原理和思想是密切相关的。首先,Arduino无论是硬件还是软件都是开源的,这就意味着所有人都可以查看和下载其源码、图表、设计等资源,并且用来做任何开发都可以。用户可以购买克隆开发板和基于Arduino的开发板,甚至可以自己动手制作一个开发板。但是自己制作的不能继续使用Arduino这个名称,可以自己命名,比如Robotduino。其次,正如林纳斯·本纳第克特·托瓦兹的Linux操作系统一样,开源还意味着所有人可以下载使用并且参与研究和改进Arduino,这也是Arduino更新换代如此迅速的原因。全世界各种电子爱好者用Arduino开发出各种有意思的电子互动产品。有人用它制作了一个自动除草机,去上班的时候打开,不久花园里的杂草就被清除干净了!有人用它制作微博机器人,配合一些传感器监测植物的状态,并及时发微博来提醒主人,植物什么时间该浇水、施肥、除草等,非常有趣。图1-3所示为日本一开发者用Arduino和Kinect制作的可以自己接住丢掉垃圾的智能垃圾桶。图1-3智能垃圾桶Arduino可以和LED、点阵显示板、电机、各类传感器、按钮、以太网卡等各类可以输出输入数据或被控制的任何东西连接,在互联网上各种资源十分丰富,各种 案例 全员育人导师制案例信息技术应用案例心得信息技术教学案例综合实践活动案例我余额宝案例 、资料可以帮助用户迅速制作自己想要制作的电子设备。在应用方面,Arduino突破了传统的依靠键盘、鼠标等外界设备进行交互的局限,可以更方便地进行双人或者多人互动,还可以通过Flash、Processing等应用程序与Arduino进行交互。Arduino与Flash、Processing的交互将在第6章介绍。1.3Arduino硬件的分类在了解Arduino起源以及使用Arduino制作的各种电子产品之后,接下来对Arduino硬件和开Arduino开发从零开始学·4·发板,以及其他扩展硬件进行初步的了解和学习。1.3.1Arduino开发板Arduino开发板设计得非常简洁,一块AVR单片机、一个晶振或振荡器和一个5V的直流电源。常见的开发板通过一条USB数据线连接计算机。Arduino有各式各样的开发板,其中最通用的是ArduinoUNO。另外,还有很多小型的、微型的、基于蓝牙和Wi-Fi的变种开发板。还有一款新增的开发板叫做ArduinoMega2560,它提供了更多的I/O引脚和更大的存储空间,并且启动更加迅速。以ArduinoUNO为例,ArduinoUNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz的晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。因为ArduinoUNO开发板的基础构成在一个表里显示不下,所以这里特意设计了两个表来展示,如表1-1和表1-2所示。表1-1ArduinoUNO开发板基本概要构成(ATmega328)1处理器工作电压输入电压数字I/O脚模拟输入脚串口ATmega3285V6-20V1461表1-2ArduinoUNO开发板基本概要构成(ATmega328)2IO脚直流电流3.3V脚直流电流程序存储器SRAMEEPROM工作时钟40mA50mA32KB2KB1KB16MHz图1-4对一块ArduinoUNO开发板功能进行了详细标注。图1-4ArduinoUNOR3功能标注ArduinoUNO可以通过以下三种方式供电,能自动选择供电方式:外部直流电源通过电源插座供电;电池连接电源连接器的GND和VIN引脚;USB接口直接供电,图1-4所示的稳压器可以把输入的7V~12V电压稳定到5V。进入Arduino的世界第1章·5·在电源接口上方,一个右侧引出3个引脚,左侧一个比较大的引脚细看会发现上面有AMST1117的字样,其实这个芯片是个三端5V稳压器,电源口的电源经过它稳压之后才给板子输入,其实电源适配器内已经有稳压器,但是电池没有。可以理解为它是一个安检员,一切从电源口经过的电源都必须过它这一关,这个“安检员”对不同的电源会进行区别对待。首先,AMS1117的片上微调把基准电压调整到1.5%的误差以内,而且电流限制也得到了调整,以尽量减少因稳压器和电源电路超载而造成的压力。再者根据输入电压的不同而输出不同的电压,可提供1.8V、2.5V、2.85V、3.3V、5V稳定输出,电流最大可达800mA,内部的工作原理这里不必去探究,读者只需要知道,当输入5V的时候输出为3.3V,输入9V的时候输出才为5V,所以用9V(9V~12V均可,但是过高的电源会烧坏板子)电源供电的原因就在这,如使用5V的适配器与Arduino连接,之后连接外设做实验,会发现一些传感器没有反应,这就是某些传感器需要5V的信号源,可是板子最高输出只能达到3.3V,必然有问题。重置按钮和重置接口都用于重启单片机,就像重启电脑一样。若利用重置接口来重启单片机,应暂时将接口设置为0V即可重启。GND引脚为接地引脚,也就是0V。A0~A5引脚为模拟输入的6个接口,可以用来测量连接到引脚上的电压,测量值可以通过串口显示出来。当然也可以用作数字信号的输入输出。Arduino同样需要串口进行通信,图1-4所示的串口指示灯在串口工作的时候会闪烁。Arduino通信在编译程序和下载程序时进行,同时还可以与其他设备进行通信。而与其他设备进行通信时则需要连接RX(接收)和TX(发送)引脚。ATmega328芯片中内置的串口通信硬件是可以通过同步和异步模式工作的。同步模式需要专用的信号来表示时钟信息,而Arduino的串口(USART外围设备,即通用同步/异步接收发送装置)工作在异步模式下,这和大多数PC的串口是一致的。数字引脚0和1分别标注着RX和TX,表明这两个可以当做串口的引脚是异步工作的,即可以只接收、发送,或者同时接收和发送信号。1.3.2Arduino扩展硬件与Arduino相关的硬件除了核心开发板外,各种扩展板也是重要的组成部分。Arduino开发板设计的可以安装扩展板,即盾板进行扩展。它们是一些电路板,包含其他的元件,如网络模块、GPRS模块、语音模块等。在图1-4所示的开发板两侧可以插其他引脚的地方就是可以用于安装其他扩展板的地方。它被设计为类似积木、通过一层层的叠加而实现各种各样的扩展功能。例如ArduinoUNO同W5100网络扩展板可以实现上网的功能,堆插传感器扩展板可以扩展Arduino连接传感器的接口。图1-5和图1-6为Arduino同扩展板连接的例子。图1-5ArduinoUNO与一块原型扩展板连接Arduino开发从零开始学·6·图1-6ArduinoUNO与网络扩展板连接虽然Arduino开发板支持很多扩展板来扩展功能,但其扩展插座中引脚的间距并不严格规整。仔细观察开发板会发现上面两个最远的引脚之间距离为4.064mm,这与 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的2.54mm网格的面包板及其他扩展工具并不兼容,尽管要求改正的呼声很强烈,但是这个误差却很难改正,一旦改正将使得原来的大量扩展板变得不兼容,所以这个误差便没有去改动。虽然这个误差没有改动,但是很多公司和个人在生产Arduino兼容的产品时兼顾增加了额外两行2.54mm的针孔来解决这个问题,另外美国Gravitech(www.gravitech.us)公司完全舍弃了扩展板兼容来解决这个问题。1.4Arduino展望未来Arduino自诞生以来,简单、廉价的特点使得Arduino如同雨后春笋般迅速风靡全球,在不断发展的同时,Arduino也在发挥着更重要的作用。本节将对Arduino发展的特点和未来发展做一点总结和展望。1.4.1创客文化在介绍Arduino发展前景之前,首先需要了解逐渐兴起的“创客”文化。什么是“创客”?“创客”一词来源于英文单词“Maker”,指的是不以盈利为目标,努力把各种创意转变为现实的人。其实就是热爱生活,愿意亲手创新为生活增加乐趣的一群人。他们精力旺盛,坚信世界会因为自己的创意而改变。创客文化兴起于国外,经过一段时间红红火火的发展,如今已经成为一种潮流。国内也不示弱,一些硬件发烧友了解到国外的创客文化后被其深深吸引,经过圈子中的口口相传,大量的硬件、软件、创意人才聚集在了一起。各种社区、空间、论坛的建立使得创客文化在中国真正流行起来。北京、上海、深圳已经发展成为中国创客文化的三大中心。那么,是什么推动创客文化如此迅猛发展呢?众所周知,硬件的学习和开发是有一定的难度的,人人都想通过简单的方式实现自己的创意,于是开源硬件应运而生。而开源硬件平台中知名度较高的应该就是日渐强大的Arduino了。Arduino作为一款开源硬件平台,一开始被设计的目标人群就是非电子专业尤其是艺术家学习使用的,让他们更容易实现自己的创意。当然,这不是说Arduino性能不强、有些业余,而是表明Arduino很简单,易上手。Arduino内部封装了很多函数和大量的传感器函数库,即使不懂软件开发和电子设计的人也可以借助Arduino很快创作出属于自己的作品。可以说Arduino与创客文化是进入Arduino的世界第1章·7·相辅相成的。一方面,Arduino简单易上手、成本低廉这两大优势让更多的人都能有条件和能力加入创客大军;另一方面,创客大军的日益扩大也促进了Arduino的发展。各种各样的社区、论坛的完善,不同的人、不同的环境、不同的创意每时每刻都在对Arduino进行扩展和完善。在2011年举行的GoogleI/O开发者大会上,Google公司发布了基于Arduino的AndroidOpenAccessory标准和ADK工具,这使得大家对Arduino的巨大的发展前景十分看好。Arduino发展潜力巨大,既可以让创客根据创意改造成为一个小玩具,也可以大规模制作成工业产品。国内外Arduino社区良好的运作和维护使得几乎每一个创意都能找到实现的理论和实验基础,相信随着城市的不断发展,人们对生活创新的不断追求,会有越来越多的人听说Arduino、了解Arduino、玩转Arduino。1.4.2快速原型设计纵观计算机语言的发展,从0和1相间的二进制语言到汇编语言,从K&R的C语言到现在各式各样的高级语言,计算机语言正在逐渐变成更自由、更易学易懂的大众化语言。硬件的发展已经逐渐降低软件开发的复杂性,编程的门槛正在逐渐降低。曾有人预言:未来的时代,程序员将要消失,编程不再是局限人们思维和灵感的桎梏。在软件行业飞速发展的现在,几乎任何具有良好逻辑思维能力的人只要对某些产品感兴趣,就可以通过互联网获得足够的资源从而成为一名软件开发人员。而Arduino的出现,让人们看到了不仅是软件,硬件的开发也越来越简单和廉价。不必从底层开始学习开发计算机的特性让更多的人从零上手,将自己的灵感用最快的速度转化成现实。以Arduino为其中代表的开源硬件,降低了入行的门槛,从而设计电子产品不再是专业领域电子工程师的专利,“自学成才”的电子工程师正在逐渐成为可能。开源硬件将会使得软件同硬件、互联网产业更好的结合到一起,在未来的一段时间里,开源硬件将会有非常好的发展,最终形成硬件产品少儿化、平民化、普及化的趋势。同时,Arduino的简单易学也会成为一些电子爱好者进入电子行业的一块基石,随着使用Arduino制作电子产品的深入,相应的也会对硬件进行更深层次的探索。在简单易学的前提下,比一开始就学习单片机、汇编入行要简单有趣得多。Arduino开源和自由的设计无疑是全世界电子爱好者的福音,大量的资源和资料让很多人快速学习Arduino,开发一个电子产品开始变得简单。互联网的飞速发展让科技的脚步加快,互联网产品正在变得更简单。利用Arduino,电子爱好者们可以快速设计出原型,从而根据反馈改进出更加稳定可靠的版本。1.5本章 小结 学校三防设施建设情况幼儿园教研工作小结高血压知识讲座小结防范电信网络诈骗宣传幼儿园师德小结 本章主要介绍了Arduino的起源和概念,分析了应用现状并对未来的发展进行展望。Arduino是包括了开发板等硬件和开发环境等软件在内的开源电子平台。Arduino开发板核心是Atmel公司生产的AVR单片机。Arduino容易上手,适合快速开发,具有广阔的发展潜力。第2章开始Arduino之旅经过上一章的简单介绍,读者已经对Arduino有了一些了解。本章开始进行Arduino入门级学习,从安装IDE环境开始,逐步开始第一次编写程序、下载程序。本章还将学习Arduino语言和语法,并帮助读者熟练地使用Arduino编程完成一些小实验项目。本章知识点:在三种操作系统下安装ArduinoIDE了解与Arduino相关的软件制作第一个Arduino程序用示例的形式学习Arduino语法2.1搭建开发环境在安装IDE(IntegratedDevelopmentEnvironment),即集成开发环境之前,需要了解一些有关嵌入式软件的相关知识。2.1.1交叉编译Arduino做好的电子产品不能直接运行,需要利用电脑将程序烧到单片机里面。很多嵌入式系统需要从一台计算机上编程,将写好的程序下载到开发板中进行测试和实际运行。因此跨平台开发在嵌入式系统软件开发中很常见。所谓交叉编译,就是在一个平台上生成另一个平台上可以执行的代码。开发人员在电脑上将程序写好,编译生成单片机执行的程序,就是一个交叉编译的过程。编译器最主要的一个功能就是将程序转化为执行该程序的处理器能够识别的代码,因为单片机上不具备直接编程的环境,因此利用Arduino编程需要两台计算机:Arduino单片机和PC。这里的Arduino单片机叫做目标计算机,而PC则被称为宿主计算机,也就是通用计算机。Arduino用的开发环境被设计成在主流的操作系统上均能运行,包括Windows、Linux、MacOS三个主流操作系统平台。2.1.2在Windows上安装IDE给Arduino编程需要用到IDE(集成开发环境),这是一款免费的软件。在这款软件上编程需要使用Arduino的语言,这是一种解释型语言,写好的程序被称为sketch,编译通过后就可以下载到开发板中。在Arduino的官方网站上可以下载这款官方设计的软件及源码、教程和文档。ArduinoIDE的官方下载地址为:http://arduino.cc/en/Main/Software。开始Arduino之旅第2章·9·打开网页后,根据提示可以选择相应的操作系统版本。截止到2014年3月1日,可供下载的稳定版本为Arduino1.0.5。详细安装步骤如下所示。(1)Windows操作系统的用户只需单击WindowsInstaller,在弹出的对话框中单击“运行”或“保存”按钮即可下载安装IDE,如图2-1所示。图2-1下载ArduinoIDE安装包(2)下载完成后,双击鼠标打开安装包,等待进入安装界面,如图2-2所示,此时单击IAgree按钮。图2-2安装界面(3)此时显示安装选项,如图2-3所示。从上至下的选项复选框依次为:安装Arduino软件;安装USB驱动;创建开始菜单快捷方式;创建桌面快捷方式;关联.ino文件。Arduino通过USB串口与计算机相连接,所以安装USB驱动选项需要选择。写好的Arduino程序保存文件类型为.ino文件,因此需要关联该类型文件。中间两项创建快捷方式则可选可不选。选择完成后单击Next按钮。图2-3安装选项Arduino开发从零开始学·10·(4)根据提示选择安装目录,如图2-4所示。安装文件默认的目录为C:\ProgramFiles(x86)\Arduino,也可以自行选择其他的安装目录,之后单击Install按钮即可进行安装,如图2-5所示。图2-4选择安装目录图2-5安装过程中(5)安装完成后关闭安装对话框。双击Arduino应用程序即可进入IDE-sketch初始界面,如图2-6所示。图2-6ArduinoIDE1.0.5界面至此,ArduinoIDE已经成功地安装到了PC上。在将开发板用USB连接到PC上后,Windows会自动安装Arduino的驱动,如果安装不成功则需要手动设置驱动目录,指定驱动目录位置为安装过程中所选择的Arduino安装文件夹。驱动安装成功后,开发板绿色的电源指示灯会亮起来,此时说明开发板可用。关于IDE的介绍会在2.1.5小节进行,2.1.3小节和2.1.4小节将会讲解Linux和MacOS上的IDE安装。2.1.3在Linux上安装IDE不少嵌入式开发者或电子爱好者喜欢使用Linux操作系统。本小节介绍在Linux上安装ArduinoIDE的过程。开始Arduino之旅第2章·11·在Linux上安装ArduinoIDE可以通过两种方式:一种是打开终端,输入命令安装Arduino开发环境;另一种则是去官网下载安装。1.通过终端命令行安装下面以Linux的一个发行版本Fedora为例,介绍如何安装ArduinoIDE开发环境。(1)首先通过命令行直接安装,打开终端(一般快捷键为Alt+Ctrl+T)后输入语句:sudoyum–yinstallarduino不同的发行版本安装的命令不同,如Ubuntu安装的命令为sudoapt-getinstallArduino。(2)系统提示输入密码后即可安装,安装过程如图2-7所示。图2-7Fedora安装IDE过程(3)安装完成后,在终端中输入arduino,即可打开安装环境,如图2-8所示。图2-8ArduinoSketch2.通过官网下载安装用命令行方式安装IDE非常方便,但版本可能不是最新的,如果想安装最新版本的ArduinoIDE,可以通过火狐浏览器打开官方软件下载网站http://arduino.cc/en/Main/Software。Arduino开发从零开始学·12·下载之前,需要了解使用的操作系统是32位机还是64位机,可以通过在终端中输入file/bin/ls来查看,如图2-9所示。图2-9查看操作系统处理器位数图2-9中所示的操作系统为32位,因此需要下载32位安装包。安装包下载完成后,双击解压缩或者在终端中使用tar命令解压缩,进入目录,双击Arduino应用程序或在终端中输入“./arduino”命令打开即可,如图2-10所示。图2-10运行Arduino客户端2.1.4在MacOS上安装IDE在苹果公司的Mac系统中安装IDE也非常简单,在官方网站下载后缀名为.zip的安装包后,解压缩到目标文件夹,如图2-11所示。图2-11解压缩安装包开始Arduino之旅第2章·13·此时用鼠标将Arduino应用程序拖动到系统的应用程序菜单中,便安装成功了,如图2-12所示。图2-12将程序添加到应用程序中如果打开ArduinoIDE时提示要安装JavaSE6,则根据提示单击“安装”按钮进行安装,如图2-13所示。安装完毕即可打开IDE。图2-13提示安装JAVASE62.1.5ArduinoIDE介绍在安装完ArduinoIDE后,进入Arduino安装目录,打开arduino.exe文件,进入初始界面。打开软件会发现这个开发环境非常简洁(上面提到的三个操作系统IDE的界面基本一致),依次显示为菜单栏、图形化的工具条、中间的编辑区域和底部的状态区域。ArduinoIDE用户界面的区域功能如图2-14所示。图2-14ArduinoIDE用户界面Arduino开发从零开始学·14·图2-15为ArduinoIDE界面工具栏,从左至右依次为编译、上传、新建程序(sketch)、打开程序(sketch)、保存程序(sketch)和串口监视器(SerialMonitor)。一定要熟记这6个小按钮,后面的介绍我们不再给图示了,只说明是哪个按钮。图2-15ArduinoIDE工具栏编辑器窗口选用一致的选项卡结构来管理多个程序,编辑器光标所在的行号在当前屏幕的左下角。1.文件菜单写好的程序通过文件的形式保存在计算机时,需要使用文件(File)菜单,文件菜单常用的选项包括:新建文件(New);打开文件(Open);保存文件(Save);文件另存为(Saveas);关闭文件(Close);程序示例(Examples);打印文件(Print)。其他选项,如“程序库”是打开最近编辑和使用的程序,“参数设置”可以设置程序库的位置、语言、编辑器字体大小、输出时的详细信息、更新文件后缀(用后缀名.ino代替原来的.pde后缀)。“上传”选项是对绝大多数支持的ArduinoI/O电路板使用传统的Arduino引导装载程序来上传。工具栏中的“上传”按钮菜单项用于跳过引导装载程序,直接把程序烧写到AVR单片机里面。开始Arduino之旅第2章·15·2.编辑菜单紧邻文件菜单右侧的是编辑(Edit)菜单,编辑菜单顾名思义是编辑文本时常用的选项集合。常用的编辑选项为恢复(Undo)、重做(Redo)、剪切(Cut)、复制(Copy)、粘贴(Paste)、全选(Selectall)和查找(Find)。这些选项的快捷键也和MicrosoftWindows应用程序的编辑快捷键相同。恢复为Ctrl+Z、剪切为Ctrl+X、复制为Ctrl+C、粘贴为Ctrl+V、全选为Ctrl+A、查找为Ctrl+F。此外,编辑菜单还提供了其他选项,如“注释(Comment)”和“取消注释(Uncomment)”,Arduino编辑器中使用“//”代表注释。还有“增加缩进”和“减少缩进”选项、“复制到论坛”和“复制为HTML”等选项。3.程序菜单程序(Sketch)菜单包括与程序相关功能的菜单项。主要包括:“编译/校验(Verify)”,和工具条中的编译相同。“显示程序文件夹(ShowSketchFolder)”,会打开当前程序的文件夹。“增加文件(AddFile)”,可以将一个其他程序复制到当前程序中,并在编辑器窗口的新选项卡中打开。“导入库(ImportLibrary)”,导入所引用的Arduino库文件。4.工具菜单工具(Tools)菜单是一个与Arduino开发板相关的工具和设置集合。主要包括:“自动格式化(AutoFormat)”,可以整理代码的格式,包括缩进、括号,使程序更易读和规范。“程序打包(ArchiveSketch)”,将程序文件夹中的所有文件均整合到一个压缩文件中,以便将文件备份或者分享。“修复编码并重新装载(FixEncoding&Reload)”,在打开一个程序时发现由于编码问题导致无法显示程序中的非英文字符时使用的,如一些汉字无法显示或者出现乱码时,可以使用另外的编码方式重新打开文件。“串口监视器(SerialMonitor)”,是一个非常实用而且常用的选项,类似即时聊天的通讯工具,PC与Arduino开发板连接的串口“交谈”的内容会在该串口显示器中显示出来,如图2-16所示。在串口监视器运行时,如果要与Arduino开发板通信,需要在串口监视器顶部的输入栏中输入相应的字符或字符串,再单击发送(Send)按钮就能发送信息给Arduino。在使用串口监视器时,需要先设置串口波特率,当Arduino与PC的串口波特率相同时,两者才能够进行通讯。WindowsPC的串口波特率的设置在计算机设备管理器中的端口属性中设置。“串口”,需要手动设置系统中可用的串口时选择的,在每次插拔一个Arduino电路板时,这个菜单的菜单项都会自动更新,也可手动选择哪个串口接开发板。“板卡”,用来选择串口连接的Arduino开发板型号,当连接不同型号的开发板时需要根据开发板的型号到“板卡”选项中选择相应的开发板。Arduino开发从零开始学·16·“烧写Bootloader”,将Arduino开发板变成一个芯片编程器,也称为AVRISP烧写器,读者可以到Arduino中文社区查找相关内容。图2-16Arduino串口监视器5.帮助菜单帮助(Help)菜单是使用ArduinoIDE时可以迅速查找帮助的选项集合。包括快速入门、问题排查和参考手册,可以及时帮助了解开发环境,解决一些遇到的问题。访问Arduino官方网站的快速链接也在帮助菜单中,下载IDE后首先查看帮助菜单是个不错的习惯。2.2常用的Arduino第三方软件介绍Arduino开发环境安装完成之后,一些第三方软件可以帮助读者更好地学习和使用Arduino制作电子产品。2.2.1图形化编程软件ArduBlockArduBlock是一款专门为Arduino设计的图形化编程软件,由上海新车间创客研制开发。这是一款第三方Arduino官方编程环境软件,目前必须在ArduinoIDE的软件下运行。但是区别于官方文本编辑环境,ArduBlock是以图形化积木搭建的方式进行编程的。就如同小孩子玩的积木玩具一样,这种编程方式使得编程的可视化和交互性大大增强,而且降低了编程的门槛,让没有编程经验的人也能够给Arduino编写程序,让更多的人投身到新点子新创意的实现中来。上海新车间是国内第一家创客空间,新车间网址为:http://xinchejian.com/。新车间开发的ArduBlock受到了国际同道的好评,尤其在Make杂志主办的2011年纽约MakerFaire展会上Arduino的核心开发团队成员Massimo特别感谢了上海新车间创客开发的图形化编程环境ArduBlock。ArduBlock的官方下载网址为:http://blog.ardublock.com/zh/。ArduBlock软件界面如图2-17所示。开始Arduino之旅第2章·17·图2-17ArduBlock软件界面截图2.2.2Arduino仿真软件VirtualbreadboardVirtualbreadboard是一款专门的Arduino仿真软件,简称VBB,中文名为“虚拟面包板”。这款软件主要通过单片机实现嵌入式软件的模拟和开发环境,它不但包括了所有Arduino的样例电路,可以实现对面包板电路的设计和布置,非常直观地显示出面包板电路,还可实现对程序的仿真调试。VBB还支持PIC系列芯片、Netduino,以及Java、VB、C++等主流的编程环境。Virtualbreadboard软件界面如图2-18所示。图2-18VBB软件截图VBB可以模拟Arduino连接各种电子模块,例如液晶屏、舵机、逻辑数字电路、各种传感器以及其他的输入/输出设备。这些部件都可以直接使用,也可以通过组合,设计出更复杂的电路和模块。Arduino开发从零开始学·18·使用VBB可以更加直观的了解电路设计,能够在设计出原型后快速实现。而且虚拟面板具有的可视性和模拟交互效果,可以实时地在软件上看到LED、LCD等可视模块的变化,同时可以确保安全,因为不是实物操作不会引起触电或者烧毁芯片等问题。另外,用VBB设计出的作品也可以更快速的分享和整理,使学习和使用更加方便、简单。VBB的版本更新很频繁,其官方网站为:http://www.virtualbreadboard.com/。截至到目前为止,官方版本已经更新到了4.45。随着用户的增多,VBB由原来的免费下载变更为收费,想要学习的读者需要购买使用。还有其他不错的第三方软件如Proteus,既可以进行Arduino的仿真,又能画出标准的电路图和PCB图样,在国内外使用的人很多。读者如果有兴趣可以自行查阅资料下载学习。2.3第一次上手Arduino在下载安装好IDE之后,下一步就可以实践了。通过编写和上传第一个程序,正式进入Arduino的世界。在本节中,需要做的不仅是实现编写和上传程序,更要考虑这些事情背后是如何实现的,通过学习和总结Arduino编程的技巧,快速上手Arduino。2.3.1加载第一个程序在学习一些语言时,比如C语言,经典的入门程序就是鼎鼎有名的HelloWorld!简短的两个单词敲开了C语言的大门,让学习C语言者感觉非常简单而有趣,同时这个简单的程序延伸了很多深刻的话题,比如主函数、输入输出、编译过程等等。程序2-1便是C语言著名的敲门砖。程序2-1:C语言的向世界问好#include<stdio.h>main(){printf(“helloworld\n”);}Arduino语言也像C语言一样,同样追随C语言的脚步,在硬件的世界里,使用灯光的闪烁代表helloworld,下面我们编写第一个Sketch!打开ArduinoIDE后,需要新建一个空的Sketch。之后就可以在编辑器上编写第一个Sketch,如程序2-2所示。程序2-2:Arduino向世界问好voidsetup(){pinMode(13,OUTPUT);//将13引脚设置为输出引脚}voidloop(){开始Arduino之旅第2章·19·digitalWrite(13,HIGH);//13引脚输出高电平,即将小灯点亮delay(1000);digitalWrite(13,LOW);//13引脚输出低电平,即将小灯熄灭delay(1000);}这个例子是Arduino示例Basics中的Blink程序,也可以通过图2-19所示的操作打开该程序。Blink作为Arduino入门的初始程序非常简洁易懂,在每句话的后面作者都给出了注释,官方示例中的程序如图2-20所示。图2-19Blink所在位置图2-20Blink程序编写或者打开Blink之后,便可以连接Arduino开发板,将开发板的USB接口连接到电脑上,当系统提示安装成功,并且开发板的绿色“ON”指示灯亮起时,就可以进行Blink的上传。单击“上传”按钮,再经过短暂的几秒烧写之后,会发现开发板的串口指示灯闪烁了数次,提示成功之Arduino开发从零开始学·20·后,开发板装载的LED灯便开始不停闪烁。之后再来看状态区域,状态区域显示“下载成功”和“二进制程序大小1018字节”的字样。我们第一个Arduino程序就下载并成功运行了。2.3.2用ArduinoIDE开发程序流程当程序编写好之后,关闭前需要将文件保存到一个目录中。如果是开发一个项目,编写的Sketch可能不止一个,负责不同部分和模块开发的人员都各自编写好Sketch,最后综合Sketeh时发现程序特别难以阅读,并且很多变量名称不一致,修改起来非常麻烦,这就需要一个规范的开发流程。在软件工程中,软件项目开发有很多不同的模型适用于不同的开发需求,例如瀑布模型、螺旋模型等。由于嵌入式项目bug排查起来比较费力,为了开发一个稳定的嵌入式系统,往往采用“增量”式模型,即在功能最简单、最基本的系统基础上逐渐扩展其功能。因此,在编写程序之前,必须对程序所实现的功能有一个详细的规划,对整个系统的基本功能需求有一个清晰的定义。在编写程序时应当约定好各种变量、函数名称,并做好注释和文档记录。不同的模块在开发过程中需要不断的测试,也要做好详细的开发和测试记录。编写程序时也是同样道理,增量式模型要求迅速将系统整体的基本功能实现出来,对于不同的功能可以利用不同的函数进行实现和测试,而不必在主程序中直接定义和实现,这样既快捷又清晰易读。2.3.3函数库和程序架构介绍Arduino程序的架构大体可分为3个部分。(1)声明变量及接口的名称。(2)setup()。在Arduino程序运行时首先要调用setup()函数,用于初始化变量、设置针脚的输出/输入类型、配置串口、引入类库文件等等。每次Arduino上电或重启后,setup()函数只运行一次。(3)loop()。在setup()函数中初始化和定义变量,然后执行loop()函数。顾名思义,该函数在程序运行过程中不断地循环,根据反馈,相应地改变执行情况。通过该函数动态控制Arduino主控板。程序2-3中包含了完整的Arduino基本程序框架。程序2-3:闪灯程序intLEDPin=3;voidsetup(){pinMode(LEDPin,OUTPUT);//将3引脚设置为输出引脚}voidloop(){digitalWrite(LEDPin,HIGH);//3引脚输出高电平,即将小灯点亮delay(1000);digitalWrite(LEDPin,LOW);//3引脚输出低电平,即将小灯熄灭开始Arduino之旅第2章·21·delay(1000);}这是一个简单的实现LED灯闪烁的程序,在这个程序里,intLEDPin=3;就是上面架构的第一部分,用来声明变量及接口。voidsetup()函数则将LEDPin引脚的模式设为输出模式。在voidloop()中则循环执行点亮熄灭LED灯,实现LED灯的闪烁。Arduino官方团队提供了一套标准的Arduino函数库,如表2-1所示。表2-1Arduino标准库文件库文件名说明EEPROM读写程序库Ethernet以太网控制器程序库LiquidCrystalLCD控制程序库Servo舵机控制程序库SoftwareSerial任何数字IO口模拟串口程序库Stepper步进电机控制程序库MatrixLED矩阵控制程序库SpriteLED矩阵图象处理控制程序库WireTWI/I2C总线程序库在标准函数库中,有些函数会经常用到。如小灯闪烁的数字I/O口输入输出模式定义函数pinMode(pin,mode),时间函数中的延时函数delay(ms)、串口定义波特率函数Serial.begin(speed)和串口输出数据函数Serial.print(data)。了解和掌握这些常用函数可以帮助开发人员使用Arduino实现各种各样的功能。2.3.4HelloWorld做了什么在2.3.1小节中实现了第一个Arduino闪灯程序,这个程序不只是让开发板上的LED灯进行闪烁。在程序的背后,再思考一下,IDE是如何用编写好的程序来驱动单片机工作的呢,是不是开发板在Arduino的语言驱动下直接工作?在解决这个问题之前,先来了解一下计算机语言的工作原理。对于计算机来说,进行开发的语言并不是计算机直接可以读懂的。那么计算机能够看懂什么语言呢?有经验的读者肯定会说,二进制语言。是的,计算机的脑子只能看懂两个字符,即0和1。以一个最简单的说明为例,假如计算机会说话,那么它的启动方式可看做是两种可能:一种是通电,一种是断电。可以把通电看成是1,断电看作是0。那么计算机中的很多零部件也是一样,工作起来的状态为1,不工作的状态为0。计算机中的数据通过存储器储存起来,处理器通过一串0和1组成的地址,找到存储器中数据的位置,对数据进行一系列操作,从而有条不紊的完成了各个程序的执行任务。因此,在ArduinoIDE编程并下载程序到开发板的过程,实际上是编译器将程序翻译为机器语言(即二进制语言)的过程。计算机将二进制的指令传送到单片机程序闪存中,单片机识别指令后进行工作。图2-21是从编写好的程序到Arduino开发板运行程序的流程。Arduino开发从零开始学·22·图2-21从代码到开发板Arduino编译器的作用除了是一位必不可少的翻译官外,还是一位一丝不苟的检察官。写好的程序在编译器翻译成机器语言之前,需要检查程序是否存在语法错误,如果不符合程序框架,或者有些函数没有定义或者使用错误,还有变量类型不正确,编译器都会尽职尽责地检查出来,并明确错误位置。没有编译器,程序编写好后将无法进行解释和分析,也就无法转化成相应的机器语言。2.4Arduino语法——变量和常量加载第一个程序后,要想写出一个完整的程序,需要了解和掌握Arduino语言,本节将对Arduino语言做一个初步讲解,首先介绍变量和常量。2.4.1变量变量来源于数学,是计算机语言中能储存计算结果或者能表示某些值的一种抽象概念。通俗来说可以认为是给一个值命名。当定义一个变量时,必须指定变量的类型。如果要变量全是整数,这种变量称为整型(int),那么如果要定义一个名为LED的变量值为11,变量应该这样声明:intled11;一般变量的声明方法为类型名+变量名+变量初始化值。变量名的写法约定为首字母小写,如果是单词组合则中间每个单词的首字母都应该大写,例如ledPin、ledCount等,一般把这种拼写方式称为小鹿拼写法(pumpycase)或者骆驼拼写法(camelcase)。变量的作用范围又称为作用域,变量的作用范围与该变量在哪儿声明有关,大致分为如下两种。(1)全局变量:若在程序开头的声明区或是在没有大括号限制的声明区,所声明的变量作用域为整个程序。即整个程序都可以使用这个变量代表的值或范围,不局限于某个括号范围内。(2)局部变量:若在大括号内的声明区所声明的变量,其作用域将局限于大括号内。若在主程序与各函数中都声明了相同名称的变量,当离开主程序或函数时,该局部变量将自动消失。使用变量还有一个好处,就是可以避免使用魔数。在一些程序代码中,代码中出现但没有解释的数字常量或字符串称为魔数(magicnumber)或魔字符串(magicstring)。魔数的出现使得程开始Arduino之旅第2章·23·序的可阅读性降低了很多,而且难以进行维护。如果在某个程序中使用了魔数,那么在几个月(或几年)后将很可能不知道它的含义是什么。为了避免魔数的出现,通常会使用多个单词组成的变量来解释该变量代表的值,而不是随意给变量取名。同时,理论上一个常数的出现应该对其做必要地注释,以方便阅读和维护。在修改程序时,只需修改变量的值,而不是在程序中反复查找令人头痛的“魔数”。【示例1】带变量的闪灯程序在接下来的程序2-4里会用到ledPin这个变量,通过它来做一个带变量的闪灯程序。程序2-4:带变量的闪灯程序intledPin=13;intdelayTime=1000;voidsetup(){pinMode(ledPin,OUTPUT);}voidloop(){digitalWrite(ledPin,HIGH);delay(delayTime);//延时1sdigitalWrite(ledPin,LOW);delay(delayTime);//延时1s}这里还使用了一个名为延时的delayTime变量,在延时(delay)函数中使用的参数单位为毫秒,用到delay函数中,即延时1000毫秒。【示例2】改变闪烁频率的闪灯程序如果希望小灯闪烁快些,将延时函数值改小就可以了,读者可以尝试将delayTime改成500,可以看到小灯闪烁的频率变大了。如果在程序的后面再加上1行代码“delayTime=delayTime+100;”可以发现小灯闪烁的频率越来越小,即小灯闪烁的越来越慢了。当按下“重置”按钮后,小灯闪烁又重新变快了,如下面程序2-5所示。程序2-5:改变闪烁频率的闪灯程序intledPin=13;intdelayTime=1000;voidsetup(){pinMode(ledPin,OUTPUT);}voidloop()Arduino开发从零开始学·24·{digitalWrite(ledPin,HIGH);delay(delayTime);//延时digitalWrite(ledPin,LOW);delay(delayTime);delayTime=delayTime+100;//每次增加延时时间0.1s}2.4.2常量常量是指值不可以改变的量,例如定义常量constfloatpi=3.14,当pi=5时就会报错,因为常量是不可以被赋值的。编程时,常量可以是自定义的,也可以是Arduino核心代码中自带的。下面就介绍一下Arduino核心代码中自带的一些常用的常量,以及自定义常量时应该注意的问题。1.逻辑常量(布尔常量):false和truefalse的值为零,true通常情况下被定义为1,但true具有更广泛的定义。在布尔含义(BooleanSense)里任何非零整数为true。所以在布尔含义中-1、2和-200都定义为true。2.数字引脚常量:INPUT和OUTPUT首先要记住这两个常量必须是大写的。当引脚被配置成INPUT时,此引脚就从引脚读取数据;当引脚被配置成OUTPUT时,此引脚向外部电路输出数据。在前面程序中经常出现的pinMode(ledPin,OUTPUT),表示从ledPin代表的引脚向外部电路输出数据,使得小灯能够变亮或者熄灭。3.引脚电压常量:HIGH和LOW这两个常量也是必须大写的。HIGH表示的是高电位,LOW表示的是低电位。例如:digitalWrite(pin,HIGH);就是将pin这个引脚设置成高电位的。还要注意,当一个引脚通过pinMode被设置为INPUT,并通过digitalRead读取(read)时。如果当前引脚的电压大于等于3V,微控制器将会返回为HIGH,引脚的电压小于等于2V,微控制器将返回为LOW。当一个引脚通过pinMode配置为OUTPUT,并通过digitalWrite设置为LOW时,引脚为0V,当digitalWrite设置为HIGH时,引脚的电压应在5V。4.自定义常量在Arduino中自定义常量包括宏定义#define和使用关键字const来定义,它们之间有细微的区别。在定义数组时只能使用const。一般const相对的#define是首选的定义常量语法。2.5Arduino语法——数据类型Arduino与C语言类似,有多种数据类型。数据类型在数据结构中的定义是一个值的集合,以及定义在这个值集上的一组操作,各种数据类型需要在特定的地方使用。一般来说,变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时需要指定它的数据类型,所开始Arduino之旅第2章·25·有变量都具有数据类型,以便决定存储不同类型的数据。2.5.1常用的数据类型常用的数据类型有布尔类型、字符型、字节型、整型、无符号整型、长整型、无符号长整型、浮点型、双精度浮点型等,本小节会依次介绍这些数据类型。1.布尔类型布尔值(bollean)是一种逻辑值,其结果只能为真(true)或者假(false)。布尔值可以用来进行计算,最常用的布尔运算符是与运算(&&)、或运算(||)和非运算(!)。表2-2是与、或和非运算的真值表。表2-2真值表与与运算A假A真B假假假B真假真或或运算A假A真B假假真B真真真非非运算A假A真真假如表2-2所示的真值表中,对于与运算,仅当A和B均为真时,运算结果为真,否则,运算结果为
本文档为【arduino基础入门教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
天山书童
暂无简介~
格式:pdf
大小:6MB
软件:PDF阅读器
页数:0
分类:高中语文
上传时间:2019-11-24
浏览量:84