您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > arduino语言解析
Arduino语言Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不了解AVR单片机(微控制器)的朋友也能轻松上手。在与ArduinoDIYER接触的这段时间里,发现有些朋友对Arduino语言还是比较难入手,那么这里我就简单的注释一下Arduino语言(本人也是半罐子水,有错的地方还请各位指正)。基础C语言关键字:if...else必须紧接着一个问题表示式(expression),若这个表示式为真,紧连着表示式后的代码就会被执行。若这个表示式为假,则执行紧接着else之后的代码.只使用if不搭配else是被允许的。范例:if(val==1){digitalWrite(LED,HIGH);}for用来明定一段区域代码重复指行的次数。范例:for(inti=0;i10;i++){Serial.print(ciao);}switchcaseif叙述是程序里的分叉路口,switchcase是更多选项的路口。Swithcase根据变量值让程序有更多的选择,比起一串冗长的if叙述,使用swithcase可使程序代码看起来比较简洁。范例:switch(sensorValue){case23:digitalWrite(13,HIGH);break;case46:digitalWrite(12,HIGH);break;default://以上条件都不符合时,预设执行的动作digitalWrite(12,LOW);digitalWrite(13,LOW);}2while当while之后的条件成立时,执行括号内的程序代码。范例://当sensor值小于512,闪烁LED灯sensorValue=analogRead(1);while(sensorValue512){digitalWrite(13,HIGH);delay(100);digitalWrite(13,HIGH);delay(100);sensorValue=analogRead(1);}do...while和while相似,不同的是while前的那段程序代码会先被执行一次,不管特定的条件式为真或为假。因此若有一段程序代码至少需要被执行一次,就可以使用do…while架构。范例:do{digitalWrite(13,HIGH);delay(100);digitalWrite(13,HIGH);delay(100);sensorValue=analogRead(1);}while(sensorValue512);break让程序代码跳离循环,并继续执行这个循环之后的程序代码。此外,在break也用于分隔switchcase不同的叙述。范例://当sensor值小于512,闪烁LED灯do{//按下按钮离开循环if(digitalRead(7)==HIGH)break;digitalWrite(13,HIGH);delay(100);digitalWrite(13,HIGH);delay(100);sensorValue=analogRead(1);}while(sensorValue512);continue用于循环之内,它可以强制跳离接下来的程序,并直接执行下一个循环。3范例:for(light=0;light255;light++){//忽略数值介于140到200之间if((x140)&&(x200))continue;analogWrite(PWMpin,light);delay(10);}return函数的结尾可以透过return回传一个数值。例如,有一个计算现在温度的函数叫computeTemperature(),你想要回传现在的温度给temperature变量,你可以这样写:inttemperature=computeTemperature();intcomputeTemperature(){inttemperature=0;temperature=(analogRead(0)+45)/100;returntemperature;}goto语法符号:;(分号)Arduino语言每一行程序都是以分号为结尾。这样的语法让你可以自由地安排代码,你可以将两个指令放置在同一行,只要中间用分号隔开。(但这样做可能降低程式的可读性。)范例:delay(100);{}(大括号)大括号用来将程式代码分成一个又一个的区块,如以下范例所示,在loop()函数的前、后,必须用大括号括起来。范例:voidloop(){Serial.pritln(cial);}程式的注释就是对代码的解释和说明,编写注释有助于程式设计师(或其他人)了解代码的功能。Arduino处理器在对程式码进行编译时会忽略注释的部份。Arduino语言中的编写注释有两种方式//单行注释:这整行的文字会被处理器忽略/*多行注释:在这个范围内你可以4写一整首诗*/运算符:=+相加-相减*相乘/相除%余数除法==等于!=不等于小于大于=小于等于=大于等于&&交集||联集!反相++累加--递减+=-=*=/=数据类型:boolean布林布尔变数的值只能为真(true)或是假(false)char字符单一字符例如A,和一般的计算机做法一样Arduino将字符储存成一个数字,即使你看到的明明就是一个文字。用数字表示一个字符时,它的值有效范围为-128到127。注意:有两种主流的计算机编码系统ASCII和UNICODE。ASCII表示了127个字符,用来在序列终端机和分时计算器之间传输文字。UNICODE可表示的字符量比较多,在现代计算机操作系统内它可以用来表示多国语言。在位数需求较少的信息传输时,例如意大利文或英文这类由拉丁文,阿拉伯数字和一般常见符号构成的语言,ASCII仍是目前主要用来交换信息的编码法。byte字节类型储存的数值范围为0到255。如同字符一样字节型态的变量只需要用一个字节(8位)的内存空间储存。int整数5整数数据型态用到2字节的内存空间,可表示的整数范围为–32,768到32,767;整数变量是Arduino内最常用到的数据型态。unsignedint无符号整数(绝对值)无号整数同样利用2字节的内存空间,无号意谓着它不能储存负的数值,因此无号整数可表示的整数范围为0到65,535。long长整数长整数利用到的内存大小是整数的两倍,因此它可表示的整数范围从–2,147,483,648到2,147,483,647。unsignedlong无符号长整数无号长整数可表示的整数范围为0到4,294,967,295。float浮点数浮点数就是用来表达有小数点的数值,每个浮点数会用掉四字节的RAM,注意芯片内存空间的限制,谨慎的使用浮点数double双字节浮点也叫双精度浮点数,可表达最大值为1.7976931348623157x10308。string字符串字符串用来表达文字信息,它是由多个ASCII字符组成(你可以透过序串端口发送一个文字讯息或者将之显示在液晶显示器上)。字符串中的每一个字符都用一个组元组空间储存,并且在字符串的最尾端加上一个空字符以提示Ardunio处理器字符串的结束。下面两种宣告方式是相同的。例如:charstring1[]=Arduino;//7字符+1空字符charstring2[8]=Arduino;//与上行相同array数组一串变量可以透过索引去直接取得。假如你想要储存不同程度的LED亮度时,你可以宣告六个变量light01,light02,light03,light04,light05,light06,但其实你有更好的选择,例如宣告一个整数数组变量如下:intlight[6]={0,20,50,75,100}array这个字为没有直接用在变量宣告,而是[]和{}宣告数组。控制指令数据类型转换:char()byte()int()long()float()常量:在Arduino语言中事先定义了一些具特殊用途的保留字。HIGH|LOW表示数字IO口的电平,HIGH表示高电平(1),LOW表示低电平(0)。HIGH和LOW也用来表示你开启或是关闭了一个Arduino的脚位(pin)INPUT|OUTPUT6表示数字IO口的方向,INPUT表示输入(高阻态),OUTPUT表示输出(AVR能提供5V电压40mA电流)。true|falsetrue表示真(1),false表示假(0)。变数:变量用来指定Arduino内存中的一个位置,变量可以用来储存数据,程序人员可以透过脚本代码去不限次数的操作变数的值。因为Arduino是一个非常简易的微处理器,但你要宣告一个变量时必须先定义他的数据型态,好让微处理器知道准备多大的空间以储存这个变量值。以上为基础c语言的关键字和符号,有c语言基础的都应该了解其含义,这里也不作过多的解释。Arduino语言结构1、声明变量及接口名称(intval;intledPin=13;)。2、voidsetup()在程序开始时使用,在这个函数范围内放置初始化Arduino板子的程式,主要程式开始撰写前,使Arduino板子装置妥当的指令可以初始化变量、管脚接口模式、启用库等(例如:pinMode(ledPin,OUTPUT);)。3、voidloop()在setup()函数之后,即初始化之后,loop()让你的程序循环地被执行。使用它来运转Arduino。连续执行函数内的语句,这部份的程式会一直重复的被执行,直到Arduino板子被关闭。功能数字I/OpinMode(pin,mode)数字IO口输入输出模式定义函数,将接口定义为输入或输出接口,用在setup()函数里,pin表示为0~13接口名称,mode表示为INPUT或OUTPUT。即“pinMode(接口名称,OUTPUT或INPUT)”。范例:pinMode(7,INPUT);//将脚位7设定为输入模式digitalWrite(pin,value)数字IO口输出电平定义函数,将数字接口值至高或低、开或关,pin表示为0~13,value表示为HIGH或LOW,即digitalWrite(接口名称,HIGH或LOW)。但脚位必7须先透过pinMode明示为输入或输出模式digitalWrite才能生效。比如定义HIGH可以驱动LED。范例:digitalWrite(8,HIGH);//将脚位8设定输出高电位intdigitalRead(pin)数字IO口读输入电平函数,读出数字接口的值,pin表示为0~13,value表示为HIGH或LOW,即digitalRead(接口名称)。比如可以读数字传感器。当感测到脚位处于高电位时时回传HIGH,否则回传LOW。范例:val=digitalRead(7);//读出脚位7的值并指定给val模拟I/OintanalogRead(pin)模拟IO口读函数,从指定的模拟接口读取值,Arduino对该模拟值进行10-bit的数字转换,这个方法将输入的0-5电压值转换为0到1023间的整数值。pin表示为0~5(ArduinoDiecimila为0~5,Arduinonano为0~7)。即“analogRead(接口名称)”,比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。范例:val=analogRead(0);//读出类比脚位0的值并指定给val变数analogWrite(pin,value)数字IO口PWM输出函数,给一个接口写入模拟值(PWM波)。改变PWM脚位的输出电压值。对于ATmega168芯片的Arduino(包括Mini或BT),该函数可以工作于3,5,6,9,10和11号接口,即“analogWrite(接口名称,数值)”,pin表示3,5,6,9,10,11,value表示为0~255。比如可用于电机PWM调速或音乐播放。例如:输出电压2.5伏特(V),该值大约是128。范例:analogWrite(9,1
本文标题:arduino语言解析
链接地址:https://www.777doc.com/doc-4227262 .html