Arduino参考材料介绍材料中文版.doc
《Arduino参考材料介绍材料中文版.doc》由会员分享,可在线阅读,更多相关《Arduino参考材料介绍材料中文版.doc(93页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、!-Arduino编程参考手册程序结构4控制语句5if5if.else6for8switch case10while11do.while12break12continue13return14goto15相关语法16分号16大括号16注释18define19include20算术运算符21赋值21加,减,乘,除21取模22比较运算符24if(条件) and =, !=, (比较运算符)24布尔运算符26指针运算符27位运算27位与27位或28位异或30位非32左移、右移33复合运算符35自加+35自减-35复合加+=35复合减-=36复合乘*=36复合除/=36复合与&=36复合或|=36变量3
2、6常量36宏定义37整型常量38浮点数常量40数据类型41void41boolean42char43unsigned char43byte43int44unsigned int45word46long46unsigned long47float48double49string49String(c+)51array52数据类型转换54char()54byte()54int()55word()55long()56float()56变量作用域&修饰符57变量作用域57static (静态变量)58volatile (易变变量)60const (不可改变变量)61辅助工具62sizeof() (siz
3、eof运算符)62ASCII码表63基本函数65数字I/O65pinMode()65digitalWrite()66digitalRead()67模拟I/O68analogReference()68analogRead()69analogWrite()70高级I/O71shiftOut()71pulseIn()72时间73millis()73delay(ms)73delayMicroseconds(us)74数学库75min()75max()76abs()76constrain()76map()77pow()78sqrt()78三角函数78sin(),cos(),tan()78随机数79ran
4、domSeed()79random()79位操作80设置中断函数81a81achInterrupt()81detachInterrupt()82interrupts()83noInterrupts()83串口通讯84begin()84available()84read()87flush()88print()88println()92write()92peak()93serialEvent()93程序结构(本节直译自Arduino官网最新Reference)在Arduino中, 标准的程序入口main函数在内部被定义, 用户只需要关心以下两个函数:setup()当Arduino板起动时setup
5、()函数会被调用。用它来初始化变量,引脚模式,开始使用某个库,等等。该函数在Arduino板的每次上电和复位时只运行一次。loop()在创建setup函数,该函数初始化和设置初始值,loop()函数所做事的正如其名,连续循环,允许你的程序改变状态和响应事件。可以用它来实时控制arduino板。示例:int buonPin = 3;void setup() Serial.begin(9600); /初始化串口 pinMode(buonPin, INPUT); /设置3号引脚为输入模式void loop() if (digitalRead(buonPin) = HIGH) serialWrite(
6、H); else serialWrite(L); delay(1000);控制语句 ifif,用于与比较运算符结合使用,测试是否已达到某些条件,例如一个输入数据在某个范围之外。使用格式如下:if (value 50) / 这里加入你的代码该程序测试value是否大于50。如果是,程序将执行特定的动作。换句话说,如果圆括号中的语句为真,大括号中的语句就会执行。如果不是,程序将跳过这段代码。大括号可以被省略,如果这么做,下一行(以分号结尾)将成为唯一的条件语句。 if (x 0) digitalWrite(LEDpin, HIGH); if (x 0)digitalWrite(LEDpin, HI
7、GH); if (x 0) digitalWrite(LEDpin, HIGH); if (x 0) digitalWrite(LEDpin1, HIGH); digitalWrite(LEDpin2, HIGH); / 都是正确的圆括号中要被计算的语句需要一个或多个操作符。if.else与基本的if语句相比,由于允许多个测试组合在一起,if/else可以使用更多的控制流。例如,可以测试一个模拟量输入,如果输入值小于500,则采取一个动作,而如果输入值大于或等于500,则采取另一个动作。代码看起来像是这样:if (pinFiveInput 500) / 动作Aelse / 动作Belse中可以
8、进行另一个if测试,这样多个相互独立的测试就可以同时进行。每一个测试一个接一个地执行直到遇到一个测试为真为止。当发现一个测试条件为真时,与其关联的代码块就会执行,然后程序将跳到完整的if/else结构的下一行。如果没有一个测试被验证为真。缺省的else语句块,如果存在的话,将被设为默认行为,并执行。注意:一个else if语句块可能有或者没有终止else语句块,同理。每个else if分支允许有无限多个。if (pinFiveInput = 1000) / 执行动作Belse / 执行动作C另外一种表达互斥分支测试的方式,是使用switch case语句。forfor语句描述for语句用于重复
9、执行被花括号包围的语句块。一个增量计数器通常被用来递增和终止循环。for语句对于任何需要重复的操作是非常有用的。常常用于与数组联合使用以收集数据/引脚。for循环的头部有三个部分:for (初始化部分; 条件判断部分; 数据递增部分) /语句块。初始化部分被第一个执行,且只执行一次。每次通过这个循环,条件判断部分将被测试;如果为真,语句块和数据递增部分就会被执行,然后条件判断部分就会被再次测试,当条件测试为假时,结束循环。示例:/使用一个PWM引脚使LED灯闪烁int PWMpin = 10; / LED在10号引脚串联一个470欧姆的电阻void setup() /这里无需设置void lo
10、op() for (int i=0; i = 255; i+) analogWrite(PWMpin, i); delay(10); 编码提示:C中的for循环比在其它计算机语言中发现的for循环要灵活的多,包括BASIC。三个头元素中的任何一个或全部可能被省略,尽管分号是必须的。而且初始化部分、条件判断部分和数据递增部分可以是任何合法的使用任意变量的C语句。且可以使用任何数据类型包括floats。这些不常用的类型用于语句段也许可以为一些罕见的编程问题提供解决方案。例如,在递增部分中使用一个乘法将形成对数级增长:for(int x = 2; x -1; i = i + x) analogWri
11、te(PWMpin, i); if (i = 255) x = -1; / 在峰值切换方向 delay(10); switch caseswitch case 语句就像if语句,switch.case通过允许程序员根据不同的条件指定不同的应被执行的代码来控制程序流。特别地,一个switch语句对一个变量的值与case语句中指定的值进行比较。当一个case语句被发现其值等于该变量的值。就会运行这个case语句下的代码。break关键字将中止并跳出switch语句段,常常用于每个case语句的最后面。如果没有break语句,switch语句将继续执行下面的表达式(“持续下降”)直到遇到break,
12、或者是到达switch语句的末尾。示例: switch (var) case 1: /当var等于1执行这里 break; case 2: /当var等于2执行这里 break; default: / 如果没有匹配项,将执行此缺省段 / default段是可选的 语法 switch (var) case label: / statements break; case label: / statements break; default: / statements参数var: 与不同的case中的值进行比较的变量label: 相应的case的值whilewhile循环描述:while循环将会连续
13、地无限地循环,直到圆括号()中的表达式变为假。被测试的变量必须被改变,否则while循环将永远不会中止。这可以是你的代码,比如一个递增的变量,或者是一个外部条件,比如测试一个传感器。语法: while(expression) / statement(s)参数:expression - 一个(布尔型)C语句,被求值为真或假示例:var = 0; while(var 200) / 做两百次重复的事情 var+; do.whiledo循环do循环与while循环使用相同方式工作,不同的是条件是在循环的末尾被测试的,所以do循环总是至少会运行一次。do / 语句块 while (测试条件);示例:do
14、 delay(50); / 等待传感器稳定 x = readSensors(); / 检查传感器的值 while (x 100);breakbreak用于中止do,for,或while循环,绕过正常的循环条件。它也用于中止switch语句。示例: for (x = 0; x threshold) / bail out on sensor detect x = 0; break; delay(50);continuecontinue语句跳过一个循环的当前迭代的余下部分。(do,for,或while)。通过检查循环测试条件它将继续进行随后的迭代。示例:for (x = 0; x 40 & x 40
15、0) return 1; else return 0; return 关键字对测试一段代码很方便,不需“注释掉”大段的可能是错误的代码。void loop()/在此测试代码是个好想法return;/ 这里是功能不正常的代码/ 这里的代码永远也不会执行goto在程序中转移程序流到一个标记点语法:label: goto label; / sends program flow to the label 提示:在C程序中不建议使用goto,而且一些C编程书的作者主张永远不要使用goto语句,但是明智地使用它可以简化某些代码。许多程序员不赞成使用goto的原因是,无节制地使用goto语句很容易产生执行流
16、混乱的很难被调试程序。尽管如是说,仍然有很多使用goto语句而大大简化编码的实例。其中之一就是从一个很深的循环嵌套中跳出去,或者是if逻辑块,在某人些条件下。示例: for(byte r = 0; r -1; g-) for(byte b = 0; b 250) goto bailout; / 其它语句。 bailout:相关语法分号用于一个语句的结束示例 int a = 0;提示忘记在一行的末尾加一个分号将产生一个编译器错误。该错误信息可能是明显的,且会提及丢失分号,但也许不会。如果出现一个不可理喻的或看起来不合逻辑的错误,其中一个首先要做的事就是检查分号丢失。编译器会在前一行的附近发出抱怨
17、。大括号大括号(又称括弧或花括号)是C语言的主要组成部分。它们用在几个不同的结构中,大致如下,这可能会令初学者感到困惑。一个左大括号必须有一个右大括号跟在后面。这是一个常被称为平衡括号的条件。Arduino IDE(集成开发环境)包含一个方便的特性以检验平衡大括号。只需选择一个大括号,甚至直接在一个大括号后面点击插入点,然后它的逻辑上的同伴就会高亮显示。目前此功能有些许错误,因为IDE经常在文本中(错误地)发现一个已经被注释掉的大括号。初级程序员,和从BASIC转到C的程序员常常发现使用大括号令人困惑或畏缩。毕竟,用同样的大括号在子例程(函数)中替换RETURN语句,在条件语句中替换ENDIF
18、语句和在FOR循环中替换NEXT语句。由于大括号的使用是如此的多样,当插入一个需要大括号的结构时,直接在打出开括号之后打出闭括号是个不错的编程实践。然后在大括号之间插入一些回车符,接着开始插入语句。你的大括号,还有你的态度,将永远不会变得不平衡。不平衡的大括号常常导致古怪的,难以理解的编译器错误,有时在大型程序中很难查出。因为它们的多样的使用,大括号对于程序的语法也是极其重要的,对一个大括号移动一行或两行常常显著地影响程序的意义。大括号的主要用法/函数 void myfunction(datatype argument) statements(s) /循环 while (boolean exp
19、ression) statement(s) do statement(s) while (boolean expression); for (initialisation; termination condition; incrementing expr) statement(s) /条件语句 if (boolean expression) statement(s) else if (boolean expression) statement(s) else statement(s) 注释注释是程序中的一些行,用于让自己或他人了解程序的工作方式。他们会被编译器忽略,而不会输出到控制器,所以它们
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arduino 参考 材料 介绍 中文版
限制150内