收藏 分销(赏)

第2章-Arduino编程.pptx

上传人:天**** 文档编号:7519507 上传时间:2025-01-07 格式:PPTX 页数:84 大小:673.45KB 下载积分:16 金币
下载 相关 举报
第2章-Arduino编程.pptx_第1页
第1页 / 共84页
第2章-Arduino编程.pptx_第2页
第2页 / 共84页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,第,2,章,Arduino,编程,目录,2,.1 Arduino,开发环境,2,.2 Arduino,语言概述,2.3,Arduino,基本函数,2.1,Arduino,开发,环境,2.1.1 IDE,安装,Arduino,IDE,是,Arduino,的开放源代码的集成开发环境,其界面友好,语法简单,并能,方便,地下载程序,使得,Arduino,的程序开发变得非常便捷。作为一款开放源代码的软件,,Arduino,IDE,也是由,Java,、,Processing,、,avr-gcc,等开放源码的软件写成。,Arduino IDE,的另一个最大,特点,是跨平台的兼容性,其适用于,Windows,、,Max OS X,以及,Linux,。,2011,年,11,月,30,日,,Arduino,官方,正式发布了,Arduino1.0,版本,可以下载不同系统下的压缩包,也可以在,github,上下载,源码,重新编译自己的,IDE,。到目前为止,,Arduino IDE,已经更新到,1.8,版本,安装过程如下。,2.1.1 IDE,安装,(,1,)从,Arduino,官网下载最新版本,IDE,。选择适合自己计算机系统的安装包,这里,以,Windows,7,的,64,位系统安装过程为例。首先运行安装,程序。,2.1.1 IDE,安装,(,2,)安装选项,一般保持,默认安装。,2.1.1 IDE,安装,(,3,)选择安装,位置。,2.1 Arduino,开发环境,(,4,)安装,过程。,2.1.1 IDE,安装,(,5,)安装完成。,2.1.1 IDE,安装,(,6,),IDE,的主界面。,2.1.2,使用,IDE,使用,Arduino IDE,,需要将,Arduino,开发板通过,USB,线连接到计算机。这样,计算机,会为,Arduino,开发板安装驱动程序,并分配相应的,COM,端口,如,COM1,、,COM2,等。计算机和系统分配的,COM,端口是不一样的,。,在菜单栏中打开“工具”“端口”,进行,端口,设置,设置为计算机硬件管理中分配的端口;然后,在菜单栏打开“工具”“开发板”,,选择,Arduino,开发板的类型,如,Uno,、,DUE,、,YUN,等各种上面介绍的开发板。这样计算机就,可以,与开发板进行通信了。,2.1.2,使用,IDE,void setup(),里面的代码在导通电源时会被执行一次,而,void loop(),里面的,代码会,不断执行,。,由于,在一般的,Arduino,开发板上,第,13,脚上都有一个,LED,灯,所以定义,整形变量,led=13,,用于函数的控制。另外,程序中用了一些函数,,pinMode(),是设置引脚的输入,或者,输出;,delay(),设置延迟的时间,单位为,ms,;,digitalWrite(),是向,led,变量写入相关的值,,使得,13,脚,的,LED,灯的电平发生变化,HIGH,或者,LOW,。这样,LED,灯就会根据延迟的时间,交替地,亮灭。,2.2 Arduino,语言概述,2.2.1,标识符,标识符是用来标识源程序中某个对象的名字。这些对象可以是语句、数字类型、函数、变量、常量和数量等,。,标识符长度不要,超过,32,个字符,,C,语言对于大小写字符敏感,所以在编写长程序的时候要注意,大小写字符,的区分,。,2.2.2,关键字,C,语言,的关键字,共有,32,个,,根据关键字的作用,可将其分为数据类型关键字、控制语句 关键字、储存类型关键字和其他关键字,等,4,类。,1.,数据类型,关键字,12,个,char,:声明字符型变量或函数,。,double,:声明双精度变量或函数。,enum,:声明枚举类型。,float,:声明浮点型变量或函数,。,2.2.2,关键字,int,:声明整型变量或函数。,long,:声明长整型变量或函数。,short:,声明短整型变量或函数。,signed,:声明有符号类型变量或函数。,struct,:声明结构体变量或,函数。,union,:声明共用体(联合)数据类型。,unsigned,:声明无符号类型变量或函数。,void,:声明函数无返回值或无参数,声明无类型,指针。,2.2.2,关键字,2.,控制语句,关键字,12,个,循环语句(,5,个,),:,for,,是一种循环语句;,do,,循环语句的循环体;,while,,循环,语句的,循环条件;,break,,跳出当前循环;,continue,结束,当前循环,开始下一个循环。,条件语句(,3,个),:,if,,条件语句;,else,,条件语句否定分支(与,if,连用);,goto,,,无条件,跳转语句。,开关,语句(,3,个,),:,switch,用于,开关语句;,case,开关,语句分支;,default,,开关语句 中的“其他”分支。,2.2.2,关键字,语句(,1,个,):,return,,子程序返回语句(可以带参数,也可以不带,参数),3.,储存,类型,关键字,4,个,auto,:声明自动变量,一般不使用。,extern,:声明变量是在其他文件中声明(也可以看作是引用变量)。,register,:声明寄存器,变量,static,:声明静态变量。,2.2.2,关键字,4.,其他关键字,4,个,const,:声明只读变量。,sizeof,:计算机数据类型长度。,typedef,:用以给数据类型取别名。,volatile,:说明变量在程序执行中可被隐含地改变。,2.2.3,运算符,运算符,是告诉编译程序执行特定算术或逻辑操作的符号。,C,语言的运算范围很宽,把除了控制语句和输入输出以外几乎所有的基本操作都作为运算符处理。,运算符主要分为三大类:,算术运算符,、,关系运算符,与,逻辑运算符,。除此之外,还有一些用于完成特殊任务的,运算符,。,2.2.3,运算符,1,.,赋值运算符,赋值语句的作用是把某个常量、变量或表达式的值赋给另一个变量。,C,语言中,符号为“,=”,这里并不是等于的意思,只是赋值,等于用“,=”,表示。,注意,:赋值语句左边的变量在程序的其他地方必须声明。,2.2.3,运算符,2.,算术运算符,在,C,语言中,有两个单目和五个双目运算符,分别为:,+,正、,-,负、,*,乘法、,/,除法、,%,取,模、,+,加法、,-,减法。,3.,逻辑运算符,逻辑运算符是根据表达式的值来返回真值或是假值。其实,在,C,语言中没有所谓的真值 和假值,只是认为非,0,为真值,,0,为假值。符号功能:,&,(逻辑与),|,(逻辑或)、!,(,逻辑非,),。,2.2.3,运算符,4,.,关系运算符,关系运算符是对两个表达式进行比较,各关系返回一个真,/,假值,。,2.2 Arduino,语言概述,5,.,自,增自减,运算符,自增自减运算符是一类特殊的运算符,其中,自增运算符(,+,)和自减运算符(,-,)对 变量的操作结果是,增加,1,和,减少,1,。,6,.,复合,赋值,运算符,2.2.3,运算符,7,.,条件运算符,条件运算符,(,:,)是,C,语言,中唯一的一个三目运算符。它是对第一个表达式作真,/,假检测,然后根据结果返回另外两个表达式中的一个,语法格式,如下:,?,:,8.,逗号运算符,在,C,语言,中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,,但整个,表达式的值是最后一个表达式的,值,。,2.2.4,语言控制语句,控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。,C,语言有,9,种,控制语句,可分为,以下,3,类。,1.,条件,判断,语句,C,语言,支持两种选择语句:,if,语句和,switch,语句,。这些语句允许你在程序运行时并知道 其状态的情况下,控制程序的执行过程。首先看一下,if,语句的用法,:,if(condition)statement1;,else statement2;,2.2.4,语言控制语句,(,1,),if,语句,If,语句的执行过程如下:如果条件为真,就执行,if,的对象,statement1,;否则,执行,else,的对象,statement2,。任何时候两条语句都不可能同时执行,。,int a,b;,i,f(ab)a=0;,e,lse b=0;,2.2.4,语言控制语句,(,2,),switch,语句,C,语言又提供了一个专门用于处 理多分支结构的条件选择语句,称为,switch,语句,又称开关语句。使用,switch,语句可直接处 理多个分支(当然包括两个分支),其一般形式如下,。,2.2.4,语言控制语句,switch(,表达式,),case,常量表达式,1;,语句,1;,break,;,case,常量表达式,2;,语句,2;,break,;,case,常量表达式,n;,语句,n;,break,;,default,:,语句,n+1;,break,;,2.2.4,语言控制语句,2.,循环,执行语句,(,1,),while,语句,while,语句实现“当型”循环,其一般格式如下。,while(termination),body,;,当布尔表达式(,termination,)的值为,true,时,循环执行大括号中的语句,并且初始化部 分和迭代部分是任选的。,2.2.4,语言控制语句,(,2,),do-while,语句,do-while,语句实现“直到型”循环,其一般格式如下。,do,body,;,while(termination);,do-while,语句首先执行循环体,然后计算终止条件:若结果为,true,,则循环执行大括号 中的语句,直到布尔表达式的结果为,false,。,2.2.4,语言控制语句,(,3,),for,语句,for,语句也用来实现“当型”循环,其一般格式如下,。,for(initialization;termination;iteration),body;,2.2.4,语言控制语句,3.,转向语句,转向语句包括,break,语句、,continue,语句、,return,语句及,goto,语句。此类语句尽量少用,因为这不利于结构化程序设计,滥用它会使程序流程无规律、可读性差,。,2.2.4,语言控制语句,(,1,),break,语句,break,语句中断当前循环,和,label,一起使用,中断相关联的语句。一般格式如下。,breaklabel,;,上述,语句中,可选的,label,参数指定断点处语句的标签。,2.2.4,语言控制语句,(,2,),continue,语句,continue,语句是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循 环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。格式如下,。,While(,表达式,1),语句,组,1,if,(,表达式,2)continue;,语句,组,2,2.2.4,语言控制语句,(,3,),return,语句,return,表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由,return,后面的参数指定。,return,通常是,必,要的,因为函数调用的时候计算结果通常是通过返回值带出的,如果函 数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行得顺利与否(,-1,和,0,就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。,2.2.4,语言控制语句,(,4,),goto,语句,goto,语句也称为无条件转移语句,其一般格式如下。,goto,语句标号,;,其中,,语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号(,:,),。,语句标号起标识语句的作用,与,goto,语句配合使用。实例如下。,label,:,i+;,loop,:,while(x7);,2.2.5,语法结构,1.,顺序结构,顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行。它的 执行顺序是自上而下,依次执行。,2.2.5,语法结构,2.,选择结构,按照给定的条件有选择地执行程序中的语句。,(,1,),if,单分支结构 该结构的格式如下,。,if,(表达式)语句,功能,:判断表达式的值,若为,true,(真)则执行语句;若为,false,(假),则不执行,语句。,2.2.5,语法结构,表达式可以是任意合法的,C+,表达式,一般为逻辑表达式或关系表达式,当表达式 为赋值表达式时,可以含对变量的定义。实例如下。,if,(,int i=3,)语句,/,等价于,int i,;,if,(,i=3,)语句,若表达式的值为数值,则,0,被视为假,一切非,0,被视为真。,当表达式的表达式为真,要执行多条语句时,应将这些语句用花括号括起来以复合语 句的形式,出现,。,2.2.5,语法结构,程序是将整个,if,控制结构看成一条语句处理的。该语句称为,if,语句,也称为条件语 句,。,语句可以是另一个,if,语句或其他控制语句(嵌套),2.2.5,语法结构,(,2,),if,双分支结构,该,结构的格式如下。,if,(表达式)语句,1,else,语句,2,功能,:判断表达式的值,若为,true,(真)则执行语句,1,;若为,false,(假)则执行语句,If-false,语句。,2.2.5,语法结构,语句,1,和语句,2,可以是另一个,if,语句或其他控制语句(嵌套)。此时,else,总是与它前 面最近且未配对的,if,配对。,程序是将整个,if-false,控制结构看成一条语句处理的。,else,是,if,语句中的子句,不能 作为独立的语句单独使用。,可以用条件运算符“,:”,来实现简单的双分支结构。,2.2.5,语法结构,(,3,),if,多分支结构 该结构的格式如下,。,if,(表达式,1,)语句,1,else,if,(表达式,2,),语句,2,else,if,(表达式,3,),语句,3,else,语句,n,2.2.5,语法结构,if,多分支结构实际上是一种规范化的,if,嵌套结构。在这种结构中,,if,语句嵌套在,else,之后,即符合以下格式,。,if,(表达式,1,),语句,1,else,if,(表达式,2,),语句,2,else,if,(表达式,3,),语句,3,else,else,语句,n,2.2.5,语法结构,从逻辑上看,各个表达式条件都应当是相互排斥的,任意时刻最多有一个条件得以,满足,,不应出现既满足这个条件又满足那个条件的情况。,2.2.5,语法结构,(,4,),switch,多分支结构 该结构的格式如下,。,switch,(表达式),case,常量表达式,1:,语句序列,1,case,常量表达式,2:,语句序列,2,case,常量表达式,3:,语句序列,3,case,常量表达式,4:,语句序列,4,case,常量表达式,5:,语句序列,5,case,常量表达式,6:,语句序列,6.,default:,语句序列,n,2.2.5,语法结构,表达式和各个常量表达式的类型一般为整型、字符型、逻辑型和枚举型。各个常量表 达式的类型要与表达式的类型相同或相容,所有常量表达式的值必须互不相同。,case,子句为若干个(包括,0,个),,default,子句最多只能有一个。从语法上讲,,default,子句可以放在任何一个,case,子句的前面,此时还是先判断各个,case,常量表达式的值与表达式 值的匹配(相等)情况,如果所有常量表达式的值均不匹配,这才将,default,子句作为程序的 执行入口点。,2.2.5,语法结构,语句序列由若干条单语句组成,这些单语句可以不写成复合语句的形式。必要时,,case,语句标号后的语句序列可以省略不写。,若语句序列中含有,break,语句,则执行到此就立即跳出,switch,语句体。当所有,case,子句和,default,子句都带有,break,子句时,它们出现的顺序可以任意。,当需要针对表达式的不同取值范围进行不同处理时,使用,if,多分支结构比较方便,因为,switch,语句只能对相等关系进行测试,而,if,语句却可以用关系表达式对一个较大范围内 的值进行测试。,2.2.5,语法结构,3.,循环结构,(,1,),while,循环(当型循环)该结构的格式如下。,while,(,表达式,),语句,表达式就是给定的循环条件,语句构成循环体,在循环体中一般应用使循环趋于结束 的语句。,先判断表达式,后执行语句。当一开始表达式的值就为,false,时,程序,1,次也不循环。,While,语句一般用于不知道具体循环次数的情况。,2.2.5,语法结构,(,2,),do-while,循环(直到型循环)该结构的格式如下。,do,语句,whlie,(,表达式,),;,先执行语句,后判断表达式。程序至少要循环,1,次,。,do-while,与,while,循环的不同之处在于:,do-while,循环的循环体在前,循环条件在后,因此,do-while,循环时在任何情况下都至少被执行一次;而,while,循环的循环条件在前,循环 体在后,当循环条件一开始就不成立时,循环体一次也不执行。这一点正是在构造循环结构 时决定使用,do-while,语句还是,while,语句的重要依据。,2.2.5,语法结构,(,3,),for,循环(次数循环)该结构的格式如下。,for(,表达式,1;,表达式,2;,表达式,3),语句,表达式,1,为,for,循环的初始化部分,一般用来设置循环控制变量的初始值,当表达式 为一赋值表达式时,可包含对变量的定义;表达式,2,为,for,循环的条件部分,是用来判定循 环是否继续进行的依据;表达式,3,为,for,循环的增量部分,一般用来修改循环控制变量的值,。,省略表达式,1,时应在,for,语句之前给循环变量赋初值;省略表达式,2,时可认为循环的 条件始终为真。,2.2.5,语法结构,4,.,跳,转,语句,(,1,),break,语句(跳出语句),该,语句的格式如下。,break,;,跳转语句用在,switch,结构中,,break,语句使执行流程跳出所在,switch,语句。用在循环结 构中,,break,语句使执行流程无条件地跳出本层循环体,。,2.2.5,语法结构,break,语句经常用于使执行流程跳出死循环。,若,break,语句位于多重循环的内层循环体中,则只能跳出内层循环(本层循环),而 不能跳出其他外层循环。,2.2.5,语法结构,(,2,),continue,语句(继续语句),该,语句的格式如下。,continue,;,用于,在循环结构中,结束本次循环,即跳过循环体中尚未执行的语句,接着 进行下一次循环判断。,2.2.5,语法结构,(,3,),goto,语句(转向语句)该语句有两种格式,具体如下。,格式一,goto,语句标号,;,语句序列,语句,标号,:,语句,2.2.5,语法结构,格式二,语句,标号,:,语句,语句序列,goto,语句标号,;,goto,语句强制中止执行,goto,语句之后的语句,无条件地跳转到语句标号对应的语句继续 执行,2.3 Arduino,基本函数,2.3.1,I/O,操作函数,1,.,pinMode(pin,mode,),描述:将制定的针脚配置成输出或输入。,语法,:,pinMode(pin,mode),。,参数,:,pin,,要设置模式的针脚;,mode,,,INPUT,或,OUTPUT,。,2.3.1,I/O,操作函数,2.digitalWrite(pin,value),语法:,digitaiWrite,(,pin,value,)。,参数,:,pin,,针脚编号(如,1,5,10,A0,A3,),;,value,,,HIGH,或,LOW,。,注意:模拟针脚也可以当作数字引脚使用。,2.3.1 I/O,操作函数,3,int,digitalRead(pin,),描述:读取指定针脚的值,,HIGH,或,LOW,。,语法:,digitalRead(pin),。,参数:,pin,,要读取的针脚号(,int,)。,返回:,HIGH,或,LOW,。,注意:如果脚悬空,,digitalRead(),会返回,HIGH,或,LOW,(随机变化),模拟输入脚能,当作数字,脚使用。,2.3.2,模拟,I/O,操作函数,1.analogReference(type,),描述:设定用于模拟输入的基准电压(输入范围的最大值),。,type,可以取如下值,。,DEFAULT,:默认值,5V,(,Arduino,板为,5V,)或,3V,(,Arduino,板为,3.3V,)为基准电压。,INTERNAL,:在,Atmega168,和,Atmega328,上以,1.1V,为基准电压,在,Atmega8,上以,2.56V,为基准电压(,Arduino Mega,无此选项),。,2.3.2,模拟,I/O,操作函数,INTERAL1V1,:,1.1V,为基准电压(此选项劲针对,Arduino Mega,)。,INTERNAL2V56,:,2.56V,为基准电压(此选项仅针对,Arduino Mega,)。,EXTERNAL,:以,AREF,引脚(,05V,)的电压作为基准电压。,注意事项:改变基准电压后,之前从,analogRead(),读取的数据可能不准确。,2.3.2,模拟,I/O,操作函数,2,analongRead(),描述:从指定的模拟引脚读取数值。,Arduino,板包含一个,6,通道(,Mini,和,Na,有,8,个通道,,Mega,有,16,个通道)、,10,位模拟,/,数字转换器。这标识它将,05V,的输入电,压映像到,01023,的整数值,即每个读数对应电压值为,5V/1024,,每单位,0.0049V,(,4.6mV,)。,输入范围和精度可以通过,analogReference(),改变,其大约需要,100s,(,0.0001s,)来读取,模拟输入,,所以最大的阅读速度是每秒,1000,次。,2.3.2,模拟,I/O,操作函数,语法:,analogRead,的整数值。,数值,的读取:从输入引脚(大部分板子从,05,,,Mini,和,Nano,从,07,,,Mega,从,015,),读取,数值。,返回,:从,01023,的整数值。,注意,事项:如果模拟输入引脚没有连入电路,由,analogRead(),返回的值将根据很多项因素(例如其他模拟输入引脚,手靠近板子等)产生波动。,2.3.2,模拟,I/O,操作函数,3,analogWrite(),描述:从一个针脚输出模拟值(脉冲宽度调整,,Pulse Width Modulation,,,PWM,),让,LED,以,不同的亮度点亮或驱动电机以不同速度旋转。,analogWrite(),输出结束后,该针脚将产生,一个,稳定的特定占空比的,PWM,。,PWM,输出持续到下次调用,analogWrite(),,或在同一针脚,调用,digitalRead(),或,digitalWrite(),。,语法:,analogWrite(pin,value),。,参数:,pin,,用于输入的针脚;,value,,占空比,取值范围为,0,(完美关闭),255,(完美,打开,)。,2.3.3,高级,I/O,1,tone(),描述:在一个针脚上产生一个特定频率的方波(,50%,占空比)。持续时间可以设定,,波形,会一直产生直到调用,noTone(),函数。该针脚可以连接压电峰鸣器或其他喇叭播放声音,。,注意:如果要在多个针脚是产生不同的音调,则要在对下一个针脚使用,tone(),函数前,,先,使用,noTone(),函数。,语法:,tone(pin,frequency),或,tone(pi,frequency,duration),。,2.3.3,高级,I/O,2,noTone(),语法:,noTone(pin),参数:,pin,,所要停止产生声音的引脚。,2.3.3,高级,I/O,3,ShiftOut(),描述:将数据的一个字节一位一位地移出。从最高有效位(最左边)或,最低有效,位(最右边)开始,依次向数据脚(,DataPin,)写入每一位,之后时钟脚被拉高或,拉低,,指示之前的数据有效。,注意:如果所连接的设备时钟类型为上升沿(,Rising Edges,),则要确定在,调用,shiftOut,(),前时钟针脚为低电平,如调用,digitalWrite(clockPin,LOW),。,语法:,shiftOut(dataPin,clockPin,bitOrder,value),。,2.3.3,高级,I/O,4,shiftIn(),描述:将数据的一个字节一位一位地移入。从最高有效位(最左边)或最低位有效位(最,右边)开始,对于每个位,先拉高时钟电位,再从数据传输线中读取一位,再将时钟线拉低。,注意:这是一个软件实现,也可以参考硬件实现的,SPI,链接库,其速度更快,但只对特,定脚有效。,语法:,byte incoming=shiftIn(dataPin,clockPi,bitOrder),。,2.3.3,高级,I/O,5,pulseIn(),描述:读取一个针脚的脉冲(,HIGH,或,LOW,),。,语法:,pulseIn(pin,value),或,pulseIn(pin,value,timeout),。,参数:,pin,,要进行脉冲计时的针脚号(,int,);,value,,要读取的脉冲类型,,H,或,LOW,(,int,);,timeout,(可选),指定脉冲计数的等待时间返回,0,(,unsigned long,)。,2.3.4 shiftOut(dataPin,clockPin,bitOrder,val),shiftOut,函数能够将数据通过串行的方式在引脚上进行输出,相当于一般意义上的,同步串行,通信。这是控制器与控制器、控制器与传感器之间常用的一种通信方式,。,dataPin,:数据输出引脚,数据的每一位将逐次输出。引脚模式需要设置输出。,clockPin,:时钟输出引脚,为数据输出提供时钟,引脚模式需要设置成输出。,bitOrder,:数据位移顺序选择位,该参数为,byte,类型,有两种类型可选择,分别是高,位先入,MSBFIRST,和低位先入,LSBFIRST,。,value,:所要输出的数值,。,2.3.5 pulseIn(pin,state,timeout),pulseIn,函数用于读取引脚脉冲的时间长度,而脉冲可以是,HIGH,或,LOW,。如果是,HIGH,,函数,将先等引脚变为高电平,然后开始计时,一直到变为低电平为止。返回脉冲持续的,时间使用,的,单位为,ms,。如果超时还没有读到的话,将返回,0,。,2.3.6,时间函数,1,Millis(),描述:返回,Arduino,开发板运行当前程序开始的毫秒数。这个数字将在约,50,天后溢出(,归零,)。,返回:返回从运行当前程序开始的毫秒数(无符号长整数,unsigned long,)。,2.3.6,时间函数,2,micros(),描述:返回,Arduino,开发板从运行当前程序开始的微秒数,这个数字将在约,70,分钟后,溢出,(归零)。在,16MHz,的,Arduino,开发板上(比如,Duemilanove,和,Nano,),这个函数的,分辨率,为,4s,(即返回值总是,4,的倍数);在,8MHz,的,Arduino,开发板上(比如,LilyPad,),这个,函数,的分辨率为,8s,。,返回:返回从当前程序开始的微秒数(无符号,长整数,)。,2.3.6,时间函数,3,delay(),描述:是程序设定的暂停时间(单位毫秒),。,语法:,delay(ms),。,参数:,ms,,暂停的毫秒数(,unsigned long,)。,2.3.6,时间函数,4,delayMicroseconds(),描述:使程序暂停指定的一段时间(单位,ms,)。目前,能够产生的最大延时准确值是,16383,。这可能会在未来的,Arduino,版本中有所改变。对于超过几千,s,的延时,应该使用,delay,(),代替,。,语法:,delayMicroseconds(us),。,参数:,s,暂停的时间,单位微秒(,unsigned int,)。,2.3.7,中断函数,1,外部中断,函数,(,1,),attachInterrupt(interrupt,function,mode),描述:当发生外部中断时,调用一个指定的函数。这会用新的函数取代之前指定给,中断的,函数。大多数的,Arduino,板有两个外部中断:,0,号中断(引脚,2,)和,1,号中断(引脚,3,),。部分,不同类型,Arduino,板的中断及引脚,关系,,表中的,int,是,interrupt,的缩写,,而不是,代表整数的,int,。,Arduino Due,有更强大的中断能力,其允许在所有的引脚上触发中断,程序,,可以直接,使用,attachInterrupt,指定引脚号码。,2.3.7,中断函数,语法:,attachInterrupt(interrupt,function,mode),、,attachInterrupt(pin,function,mode,),。,参数:,interrupt,,中断的编号;,pin,,引脚号码(,Due,专用);,function,,中断发生时调用,的函数,,此函数必须不带参数和不返回任何值;,mode,,定义何种情况发生中断,以下四个,常数为,mode,的有效值。,LOW,:当引脚为低电位时,触发中断。,CHANGE,:当引脚电位发生改变时,触发中断。,RISING,:当引脚由低电位变为高电位时,触发中断。,FALLING,:当引脚由高电位变为低电位时,触发中断。,2.3.7,中断函数,2,中断使能,函数,(,1,),interrupts,(中断),描述:重新启用中断(使用,noInterrupts(),命令后将被禁用)。中断允许,一些要,任务在后台运行。禁用中断后一些函数可能无法工作,传入信息可能会被忽略。,中断会,稍微打乱代码的时间,可以在程序关键部分禁用中断,。,2.3.7,中断函数,(,2,),noInterrupts(),描述:禁止中断。中断允许后在后台运行一些重要任务,默认使能中断。禁止中断时,部分,函数会无法工作,通信中接收到的信息也可能会丢失,中断会影响计时代码,在某些,特定的,代码中也会失效。,2.3.8,串口收发函数,1,Serial.begin(speed),描述:将串行数据传输速率设置为,bit/s,(波特)。与计算机进行通信时,可以使用这些,波特率,:,300,、,1200,、,2400,、,4800,、,9600,、,14400,、,19200,、,28800,、,38400,、,57600,或,115200,。,当然,,也可以指定其他波特率,例如,针脚,0,、,1,和一个组件进行通信,它需要一个特定的,波特率,。,语法:,Serial.begin(speed),仅适用于,Arduino Mega,、,Seriall,。,begin,(,speed,),、,Serial2.begin(speed,),、,Serial3.begin(speed),、,Serial.begin(speed,config),、,Serial2.begin(speed,config,),、,Serial3.begin(speed,config),。,2.3.8,串口收发函数,2,int Serial.available(),描述:从串口读取有效的字节数(字符)。这是已经传输到并存储在串行,接收缓冲区,(能够存储,64,个字节)的数据。,Available(),继承了,Stream,类。,语法:,Serial.available(),。此外,仅适用于,Arduimo Mage,的还有,3,个,分别,是,Serial1.available(),、,Serial2.available,(),和,Serial3.available(),。,2.3.8,串口收发函数,3,int Serial.read(),描述:读取传入的串口的数据,,read(),继承自,Stream,类。,语法:,Serial.read(),。此外,仅适用于,Arduimo Mage,的还有,3,个,分别为,Serial1.read(),、,Serial2.read,(),和,Serial3.read(),。,返回:传入串口数据的第一个字节(或,1,,如果没有可用的数据,,int,)。,2.3.8,串口收发函数,4,Serial.flush(),描述:等待超出的串行数据完成传输(在,1.0,及以上的版本中,,flush(),语句的功能不再,是丢弃,所有进入缓存器的串行数据)。,flush(),继承自,Stream,类。,语法:,Serial.flush(),。此外,仅适用于,Arduino Mega,的有,3,个,分别为,Serial1.flush(),、,Serial2.flush,(),和,Serial3.flush(),。,2.3.8,串口收发函数,5,Serial.print(data),描述:以,ASCII,文本形式打印数据到串口输出。此命令可以采取多种形式,。,若要发送一个字节,则使用,Serial.write(),。,语法:,Serial.println(val),或,Serial.print(val,格式,),。,参数:,val,,打印输出的值,可以为所有数据类型;格式,指定进制(整数数据类型)或小数位数(浮点类型)。,返回:字节,print,()将返回写入的字节数,但是否使用(或读出)是可以设定的。,2.3.8,串口收发函数,6,Serial.println,(,data,),描述:打印数据到串行端口,输出人们可识别的,ASCII,码文本并回车(,ASCII13,,或”,r”,)及,换行(,ASCII10,,或”,n”,)。此命令采用的形式与,Serial.print(),相同。,语法:,Serial.println,(,val,)或,Serial.println,(,val,,,format,)。,参数:,val,,打印的内容,可以为所有数据类型;,format,,指定基数(整数数据类型),或小数,位数(浮点类型)。,返回:字节(,byte,),,printfln(),将返回写入的字节数,但可以选择是否使用它。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服