欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    arduino语法.docx

    • 资源ID:14289648       资源大小:90.79KB        全文页数:97页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    arduino语法.docx

    1、arduino语法基本语法参考结构部分setup()在Arduino中程序运行时将首先调用 setup() 函数。用于初始化变量、设置针脚的输出输入类型、配置串口、引入类库文件等等。每次 Arduino 上电或重启后,setup 函数只运行一次。示例int buttonPin =3;void setup()Serial.begin(9600);pinMode(buttonPin, INPUT);void loop()/ .loop()在setup()函数中初始化和定义了变量,然后执行 loop() 函数。顾名思义,该函数在程序运行过程中不断的循环,根据一些反馈,相应改变执行情况。通过该函数动态

    2、控制 Arduino 主控板。示例int buttonPin =3;/ setup 中初始化串口和按键针脚. void setup()beginSerial(9600);pinMode(buttonPin, INPUT);/ loop 中每次都检查按钮,如果按钮被按下,就发送信息到串口void loop()if(digitalRead(buttonPin)= HIGH)serialWrite(H);elseserialWrite(L);delay(1000);控制部分if(条件判断语句)和 =、!=、(比较运算符)if 语句与比较运算符一起用于检测某个条件是否达成,如某输入值是否在特定值之上等

    3、。if 语句的语法是:if(someVariable 50)/ 执行某些语句本程序测试 someVariable 变量的值是否大于 50。当大于 50 时,执行一些语句。换句话说,只要 if 后面括号里的结果(称之为测试表达式)为真,则执行大括号中的语句(称之为执行语句块);若为假,则跳过大括号中的语句。 if 语句后的大括号可以省略。若省略大括号,则只有一条语句(以分号结尾)成为执行语句。if(x 120) digitalWrite(LEDpin, HIGH);if(x 120)digitalWrite(LEDpin, HIGH);if(x 120) digitalWrite(LEDpin,

    4、 HIGH);if(x 120)digitalWrite(LEDpin1, HIGH);digitalWrite(LEDpin2, HIGH);/ 以上所有书写方式都正确在小括号里求值的表达式,需要以下操作符:比较运算操作符: x = y(x 等于 y)x != y(x 不等于 y) x y(x 大于 y) x = y(x 大于等于 y)警告:注意使用赋值运算符的情况(如 if (x = 10))。一个“=”表示的是赋值运算符,作用是将 x 的值设为 10(将值 10 放入 x 变量的内存中)。两个“=”表示的是比较运算符(如 if (x = 10)),用于测试 x 和 10 是否相等。后面这

    5、个语句只有 x 是 10 时才为真,而前面赋值的那个语句则永远为真。这是因为 C 语言按以下规则进行运算 if (x=10):10 赋值给 x(只要非 0 的数赋值的语句,其赋值表达式的值永远为真),因此 x 现在值为 10。此时 if 的测试表达式值为 10,该值永远为真,因为非 0 值永远为真。所以,if (x = 10) 将永远为真,这就不是我们运行 if 所期待的结果。另外,x 被赋值为 10,这也不是我们所期待的结果。if 的另外一种分支条件控制结构是if.else形式。if / elseif/else是比if更为高级的流程控制语句,它可以进行多次条件测试。比如,检测模拟输入的值,当

    6、它小于500时该执行哪些操作,大于或等于500时执行另外的操作。代码如下:if(pinFiveInput 500)/ 执行A操作else/ 执行B操作else可以进行额外的if检测,所以多个互斥的条件可以同时进行检测。测试将一个一个进行下去,直到某个测试结果为真,此时该测试相关的执行语句块将被运行,然后程序就跳过剩下的检测,直接执行到if/else的下一条语句。当所有检测都为假时,若存在else语句块,将执行默认的else语句块。注意else if语句块可以没有else语句块。else if分支语句的数量无限制。if(pinFiveInput =1000)/ 执行B操作else/ 执行C操作另

    7、外一种进行多种条件分支判断的语句是switch case语句。for语句描述for语句用于重复执行一段在花括号之内的代码。通常使用一个增量计数器计数并终止循环。for语句用于重复性的操作非常有效,通常与数组结合起来使用来操作数据、引脚。for循环开头有3个部分:(初始化;条件;增量计数)/语句“初始化”只在循环开始执行一次。每次循环,都会检测一次条件;如果条件为真,则执行语句和“增量计数”,之后再检测条件。当条件为假时,循环终止。例子/用PWM引脚将LED变暗int PWMpin =10;/将一个LED与47电阻串联接在10脚void setup()/无需设置void loop()for(in

    8、t i=0; i =255; i+)analogWrite(PWMpin, i);delay(10);编程提示C语言的for循环语句比BASIC和其他电脑编程语言的for语句更灵活。除了分号以外,其他3个元素都能省略。同时,初始化,条件,增量计算可以是任何包括无关变量的有效C语句,任何C数据类型包括float。这些不寻常的for语句可能会解决一些困难的编程问题。例如,在增量计数中使用乘法可以得到一个等比数列:for(int x =2; x -1; i = i + x)analogWrite(PWMpin, i);if(i =255) x =-1;/ 在峰值转变方向delay(10);switc

    9、h / case语句和if语句相同,switchcase通过程序员设定的在不同条件下执行的代码控制程序的流程。特别地,switch语句将变量值和case语句中设定的值进行比较。当一个case语句中的设定值与变量值相同时,这条case语句将被执行。关键字break可用于退出switch语句,通常每条case语句都以break结尾。如果没有break语句,switch语句将会一直执行接下来的语句(一直向下)直到遇见一个break,或者直到switch语句结尾。例子switch(var)case1:/当var等于1时,执行一些语句break;case2/当var等于2时,执行一些语句break;de

    10、fault:/如果没有任何匹配,执行default/default可有可不有语法switch(var)case label:/ 声明break;case label:/ 声明break;default:/ 声明参数var: 用于与下面的case中的标签进行比较的变量值label: 与变量进行比较的值while循环描述while循环会无限的循环,直到括号内的判断语句变为假。必须要有能改变判断语句的东西,要不然while循环将永远不会结束。这在您的代码表现为一个递增的变量,或一个外部条件,如传感器的返回值。语法while(表达)/语句参数表达:为真或为假的一个计算结果例子var=0;while(v

    11、ar 200)/重复一件事200遍var+do.whiledowhile循环与while循环运行的方式是相近的,不过它的条件判断是在每个循环的最后,所以这个语句至少会被运行一次,然后才被结束。do/语句while(测试条件);例子dodelay(50);/等待传感器稳定X = readSensors();/检查传感器取值while(X 100);/当x小于100时,继续运行breakbreak用于退出do,for,while循环,能绕过一般的判断条件。它也能够用于退出switch语句。例子for(x =0; x threshold)/ 超出探测范围 x =0;break;delay(50);c

    12、ontinuecontinue语句跳过当前循环中剩余的迭代部分( do,for 或 while )。它通过检查循环条件表达式,并继续进行任何后续迭代。例子for(x =0; x 40& x 400)return1;elsereturn0;return关键字可以很方便的测试一段代码,而无需“comment out(注释掉)” 大段的可能存在bug的代码。void loop()/写入漂亮的代码来测试这里。return;/剩下的功能异常的程序/return后的代码永远不会被执行goto程序将会从程序中已有的标记点开始运行语法label:goto label; /从label处开始运行提示不要在C语言

    13、中使用goto编程,某些C编程作者认为goto语句永远是不必要的,但用得好,它可以简化某些特定的程序。许多程序员不同意使用goto的原因是, 通过毫无节制地使用goto语句,很容易创建一个程序,这种程序拥有不确定的运行流程,因而无法进行调试。的确在有的实例中goto语句可以派上用场,并简化代码。例如在一定的条件用if语句来跳出高度嵌入的for循环。例子for(byte r =0; r -1; g-)for(byte b =0; b 250)goto bailout;/更多的语句.bailout:扩展语法; 分号用于表示一句代码的结束。例子:int a = 13;提示在每一行忘记使用分号作为结尾

    14、,将导致一个编译错误。错误提示可能会清晰的指向缺少分号的那行,也可能不会。如果弹出一个令人费解或看似不合逻辑的编译器错误,第一件事就是在错误附近检查是否缺少分号。大括号大括号(也称为“括号”或“大括号”)是C编程语言中的一个重要组成部分。它们被用来区分几个不同的结构,下面列出的,有时可能使初学者混乱。左大括号“”必须与一个右大括号“”形成闭合。这是一个常常被称为括号平衡的条件。在Arduino IDE(集成开发环境)中有一个方便的功能来检查大括号是否平衡。只需选择一个括号,甚至单击紧接括号的插入点,就能知道这个括号的“伴侣括号”。目前此功能稍微有些错误,因为IDE会经常会认为在注释中的括号是不

    15、正确的。对于初学者,以及由BASIC语言转向学习C语言的程序员,经常不清楚如何使用括号。毕竟,大括号还会在“return函数”、“endif条件句”以及“loop函数”中被使用到。由于大括号被用在不同的地方,这有一种很好的编程习惯以避免错误:输入一个大括号后,同时也输入另一个大括号以达到平衡。然后在你的括号之间输入回车,然后再插入语句。这样一来,你的括号就不会变得不平衡了。不平衡的括号常可导致许多错误,比如令人费解的编译器错误,有时很难在一个程序找到这个错误。由于其不同的用法,括号也是一个程序中非常重要的语法,如果括号发生错误,往往会极大地影响了程序的意义。大括号中的主要用途功能void my

    16、function(datatype argument)statements(s)循环while(boolean expression)statement(s)dostatement(s)while(boolean expression);for(initialisation; termination condition; incrementing expr)statement(s)条件语句if(boolean expression)statement(s)elseif(boolean expression)statement(s)elsestatement(s)Comments(注释)注释用于

    17、提醒自己或他人程序是如何工作的。它们会被编译器忽略掉,也不会传送给处理器,所以它们在Atmega芯片上不占用体积。注释的唯一作用就是使你自己理解或帮你回忆你的程序是怎么工作的或提醒他人你的程序是如何工作的。编写注释有两种写法:例子 x =5;/ 这是一条注释斜杠后面本行内的所有东西是注释/* 这是多行注释-用于注释一段代码if (gwb = 0) / 在多行注释内可使用单行注释x = 3; /* 但不允许使用新的多行注释-这是无效的/ 别忘了注释的结尾符号-它们是成对出现的!*/小提示当测试代码的时候,注释掉一段可能有问题的代码是非常有效的方法。这能使这段代码成为注释而保留在程序中,而编译器能

    18、忽略它们。这个方法用于寻找问题代码或当编译器提示出错或错误很隐蔽时很有效。Define#define 是一个很有用的C语法,它允许程序员在程序编译之前给常量命名。在Arduino中,定义的常量不会占用芯片上的任何程序内存空间。在编译时编译器会用事先定义的值来取代这些常量。然而这样做会产生一些副作用,例如,一个已被定义的常量名已经包含在了其他常量名或者变量名中。在这种情况下,文本将被defined 定义的数字或文本所取代。通常情况下,优先考虑使用 const 关键字替代 #define 来定义常量。Arduino 拥有和 C 相同的语法规范:语法#define 常量名常量值注意,是必须的。例子#

    19、define ledPin 3/在编译时,编译器将使用数值 3 取代任何用到 ledPin 的地方。提示在#define 声明后不能有分号。如果存在分号,编译器会抛出语义不明的错误,甚至关闭页面。#define ledPin 3; /这是一种错误写法类似的,在#define声明中包含等号也会产生语义不明的编译错误从而导致关闭页面。#define ledPin = 3 /这是一种错误写法#include#include用于调用程序以外的库。这使得程序能够访问大量标准C库,也能访问用于arduino的库。 AVR C库(Arduino基于AVR标准语法)语法手册请点击这里。注意#include和#

    20、define一样,不能在结尾加分号,如果你加了分号编译器将会报错。例子此例包含了一个库,用于将数据存放在flash空间内而不是ram内。这为动态内存节约了空间,大型表格查表更容易实现#include prog_uint16_t myConstants PROGMEM =0, 21140, 702 , 9128, 0, 25764, 8456,0,0,0,0,0,0,0,0,29810,8968,29762,29762,4500;算数运算符= 赋值运算符(单等号)赋值运算符(单等号)将等号右边的数值赋值给等号左边的变量在C语言中,单等号被称为赋值运算符,它与数学上的等号含义不同,赋值运算符告诉单

    21、片机,将等号的右边的数值或计算表达式的结果,存储在等号左边的变量中。例子:int sensVal;/声明一个名为sensVal的整型变量 senVal = analogRead(0);/将模拟引脚0的输入电压存储在SensVal变量中编程技巧:要确保赋值运算符(=符号)左侧的变量能够储存右边的数值。如果没有大到足以容纳右边的值,存储在变量中的值将会发生错误。不要混淆赋值运算符=(单等号)与比较运算符=(双等号),认为这两个表达式是相等的。加,减,乘,除描述这些运算符返回两个操作数的和,差,乘积,商. 这些运算是根据操作数的数据类型来计算的,比如 9和4都是int类型,所以9 / 4 结果是 2

    22、.这也就代表如果运算结果比数据类型所能容纳的范围要大的话,就会出现溢出.(例如. 1加上一个整数 int类型 32,767 结果变成-32,768). 如果操作数是不同类型的,结果是“更大”的那种数据类型. 如果操作数中的其中一个是 float类型或者double类型, 就变成了浮点数运算.例子y = y + 3;x = x - 7;i = j * 6;r = r / 5;Syntaxresult = value1 + value2;result = value1 - value2;result = value1 * value2;result = value1 / value2;Parame

    23、ters:value1: 任何常量或者变量 value2: 任何常量或者变量编程小提示: 整型常量的默认值是int类型,所以一些整型常量(定义中)的计算会导致溢出.(比如: 60 * 1000 会得到一个负数结果.那么if(60*1000 0) ,if得到的是一个false值. 在选择变量的数据类型时,一定要保证变量类型的范围要足够大,以至于能容纳下你的运算结果. 要知道你的变量在哪个点会“翻身”,两个方向上都得注意.如: (0 - 1) 或 (0 - - 32768) 一些数学上的分数处理,要用浮点数,但其缺点是:占用字节长度大,运算速度慢. 使用类型转换符,例如 (int)myFloat

    24、将一个变量强制转换为int类型.(取模)描述一个整数除以另一个数,其余数称为模。它有助于保持一个变量在一个特定的范围(例如数组的大小)。语法结果=被除数除数参数被除数:一个被除的数字除数:一个数字用于除以其他数返回余数(模)举例X = 7%5; / X为2X = 9% 5;/ X为4X = 5% 5;/ X为0X = 45; / X为4示例代码/*通过循环计算1到10的模*/int values10;int i =0;void setup ()void loop() values i= analogRead(0); i =(i +1)10;/取模运算提示模运算符对浮点数不起作用。比较运算符if

    25、(条件判断语句)和 =、!=、(比较运算符)if 语句与比较运算符一起用于检测某个条件是否达成,如某输入值是否在特定值之上等。if 语句的语法是:if(someVariable 50)/ 执行某些语句本程序测试 someVariable 变量的值是否大于 50。当大于 50 时,执行一些语句。换句话说,只要 if 后面括号里的结果(称之为测试表达式)为真,则执行大括号中的语句(称之为执行语句块);若为假,则跳过大括号中的语句。 if 语句后的大括号可以省略。若省略大括号,则只有一条语句(以分号结尾)成为执行语句。if(x 120) digitalWrite(LEDpin, HIGH);if(x

    26、 120)digitalWrite(LEDpin, HIGH);if(x 120) digitalWrite(LEDpin, HIGH);if(x 120)digitalWrite(LEDpin1, HIGH);digitalWrite(LEDpin2, HIGH);/ 以上所有书写方式都正确在小括号里求值的表达式,需要以下操作符:比较运算操作符: x = y(x 等于 y)x != y(x 不等于 y) x y(x 大于 y) x = y(x 大于等于 y)警告:注意使用赋值运算符的情况(如 if (x = 10))。一个“=”表示的是赋值运算符,作用是将 x 的值设为 10(将值 10 放

    27、入 x 变量的内存中)。两个“=”表示的是比较运算符(如 if (x = 10)),用于测试 x 和 10 是否相等。后面这个语句只有 x 是 10 时才为真,而前面赋值的那个语句则永远为真。这是因为 C 语言按以下规则进行运算 if (x=10):10 赋值给 x(只要非 0 的数赋值的语句,其赋值表达式的值永远为真),因此 x 现在值为 10。此时 if 的测试表达式值为 10,该值永远为真,因为非 0 值永远为真。所以,if (x = 10) 将永远为真,这就不是我们运行 if 所期待的结果。另外,x 被赋值为 10,这也不是我们所期待的结果。if 的另外一种分支条件控制结构是if.else形式。布尔运算符这些运算符可以用于if条件句中。&(逻辑与)只有两个运算对象为“真”,才为“真”,如:if (digitalRead(2) = HIGH & digitalRead(3) = HIGH) / 读取两个开关的电平/ .


    注意事项

    本文(arduino语法.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开