的程序可以划分为三个主要部分:结构、变量(变量与常量)、函数。结构部分一、结构1.1setup()1.2loop()二、结构控制2.1if2.2if...else2.3for2.4switchcase2.5while2.6do...while2.7break2.8continue2.9return2.10goto三、扩展语法3.1;(分号)3.2{}(花括号)3.3//(单行注释)3.4/**/(多行注释)3.5#define3.6#include四、算数运算符4.1=(赋值运算符)4.2+(加)4.3-(减)4.4*(乘)4.5/(除)4.6%(模)五、比较运算符5.1==(等于)5.2!=(不等于)5.3(小于)5.4(大于)5.5=(小于等于)5.6=(大于等于)六、布尔运算符6.1&&(与)6.2||(或)6.3!(非)七、指针运算符7.1*取消引用运算符7.2&引用运算符八、位运算符8.1&(bitwiseand)8.2|(bitwiseor)8.3^(bitwisexor)8.4~(bitwisenot)8.5(bitshiftleft)8.6(bitshiftright)九、复合运算符9.1++(increment)9.2--(decrement)9.3+=(compoundaddition)9.4-=(compoundsubtraction)9.5*=(compoundmultiplication)9.6/=(compounddivision)9.6&=(compoundbitwiseand)9.8|=(compoundbitwiseor)变量部分十、常量10.1HIGH|LOW(引脚电压定义)10.2INPUT|OUTPUT(数字引脚(Digitalpins)定义)10.3true|false(逻辑层定义)10.4integerconstants(整数常量)10.5floatingpointconstants(浮点常量)十一、数据类型11.1void11.2boolean(布尔)11.3char(有号数据类型)11.4unsignedchar(无符号数据类型)11.5byte(无符号数)11.6int(整型)(无符号整型)11.8word11.9long(长整数型)11.10unsignedlong(无符号长整数型)11.11float(浮点型数)11.12double(双精度浮点数)11.13string(chararray/字符串)11.14Stringobject(String类)11.15array(数组)十二、数据类型转换12.1char()12.2byte()12.3int()12.4word()12.5long()12.6float()十三、变量作用域&修饰符13.1variablescope(变量的作用域)13.2static(静态变量)13.3volatile13.4const十四、辅助工具14.1sizeof()函数部分十五、数字I/O15.1pinMode()15.2digitalWrite()15.3digitalRead()十六、模拟I/O16.1analogReference()16.2analogRead()16.3analogWrite()PWM十七、高级I/O17.1tone()17.2noTone()17.3shiftOut()17.4shiftIn()17.5pulseIn()十八、时间18.1millis()18.2micros()18.3delay()18.4delayMicroseconds()十九、数学运算19.1min()19.2max()19.3abs()19.4constrain()19.5map()19.6pow()19.7sqrt()19.8ceil()19.9exp()19.10fabs()19.11floor()19.12fma()19.13fmax()19.14fmin()19.15fmod()19.16ldexp()19.17log()19.18log10()19.19round()19.20signbit()19.21sq()19.22square()19.23trunc()二十、三角函数20.1sin()20.2cos()20.3tan()20.4acos()20.5asin()20.6atan()20.7atan2()20.8cosh()20.9degrees()20.10hypot()20.11radians()20.12sinh()20.13tanh()二十一、随机数21.1randomSeed()21.2random()二十二、位操作()22.2highByte()22.3bitRead()22.4bitWrite()22.5bitSet()22.6bitClear()22.7bit()二十三、设置中断函数23.1attachInterrupt()23.2detachInterrupt()二十四、开关中断24.1interrupts()(中断)24.2noInterrupts()(禁止中断)二十五、通讯25.1Serial25.1.1if(Serial)25.1.2Serial.available()25.1.3Serial.begin()25.1.4Serial.end()25.1.5Serial.find()25.1.6Serial.findUntil()25.1.7Serial.flush()25.1.8Serial.parseFloat()25.1.9Serial.parseInt()25.1.10Serial.peek()25.1.11Serial.print()25.1.12Serial.println()25.1.13Serial.read()25.1.14Serial.readBytes()25.1.15Serial.readBytesUntil()25.1.16Serial.setTimeout()25.1.17Serial.write()25.1.18Serial.SerialEvent()25.2Stream二十六、USB(仅适用于Leonardo和Due)26.1Mouse(键盘)26.2Keyboard(鼠标)结构部分一、结构1.1setup()在Arduino中程序运行时将首先调用setup()函数。用于初始化变量、设置针脚的输出\输入类型、配置串口、引入类库文件等等。每次Arduino上电或重启后,setup函数只运行一次。示例intbuttonPin=3;voidsetup(){Serial.begin(9600);pinMode(buttonPin,INPUT);}voidloop(){//...}1.2loop()在setup()函数中初始化和定义了变量,然后执行loop()函数。顾名思义,该函数在程序运行过程中不断的循环,根据一些反馈,相应改变执行情况。通过该函数动态控制Arduino主控板。示例intbuttonPin=3;//setup中初始化串口和按键针脚.voidsetup(){beginSerial(9600);pinMode(buttonPin,INPUT);}//loop中每次都检查按钮,如果按钮被按下,就发送信息到串口voidloop(){if(digitalRead(buttonPin)==HIGH)serialWrite('H');elseserialWrite('L');delay(1000);}二、结构控制2.1ifif(条件判断语句)和==、!=、、(比较运算符)if语句与比较运算符一起用于检测某个条件是否达成,如某输入值是否在特定值之上等。if语句的语法是:if(someVariable50){//执行某些语句}本程序测试someVariable变量的值是否大于50。当大于50时,执行一些语句。换句话说,只要if后面括号里的结果(称之为测试表达式)为真,则执行大括号中的语句(称之为执行语句块);若为假,则跳过大括号中的语句。if语句后的大括号可以省略。若省略大括号,则只有一条语句(以分号结尾)成为执行语句。if(x120)digitalWrite(LEDpin,HIGH);if(x120)digitalWrite(LEDpin,HIGH);if(x120){digitalWrite(LEDpin,HIGH);}if(x120){digitalWrite(LEDpin1,HIGH);digitalWrite(LEDpin2,HIGH);}//以上所有书写方式都正确在小括号里求值的表达式,需要以下操作符:比较运算操作符:x==y(x等于y)x!=y(x不等于y)xy(x小于y)xy(x大于y)x=y(x小于等于y)x=y(x大于等于y)警告:注意使用赋值运算符的情况(如if(x=10))。一个“=”表示的是赋值运算符,作用是将x的值设为10(将值10放入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,这也不是我们所期待的结果。形式。2.2if...elseif/else是比if更为高级的流程控制语句,它可以进行多次条件测试。比如,检测模拟输入的值,当它小于500时该执行哪些操作,大于或等于500时执行另外的操作。代码如下:if(pinFiveInput500){//执行A操作}else{//执行B操作}else可以进行额外的if检测,所以多个互斥的条件可以同时进行检测。测试将一个一个进行下去,直到某个测试结果为真,此时该测试相关的执行语句块将被运行,然后程序就跳过剩下的检测,直接执行到if/else的下一条语句。当所有检测都为假时,若存在else语句块,将执行默认的else语句块。注意elseif语句块可以没有else语句块。elseif分支语句的数量无限制。if(pinFiveInput500){//执行A操作}elseif(pinFiveInput=1000){//执行B操作}else{//执行C操作}另外一种进行多种条件分支判断的语句是switchcase语句。2.3forfor语句描述for语句用于重复执行一段在花括号之内的代码。通常使用一个增量计数器计数并终止循环。for语句用于重复性的操作非常有效,通常与数组结合起来使用来操作数据、引脚。for循环开头有3个部分:(初始化;条件;增量计数){//语句}“初始化”只在循环开始执行一次。每次循环,都会检测一次条件;如果条件为真,则执行语句和“增量计数”,之后再检测条件。当条件为假时,循环终止。例子//用PWM引脚将LED变暗intPWMpin=10;//将一个LED与47Ω电阻串联接在10脚voidsetup(){//无需设置}voidloop(){for(inti=0;i=255;i++){analogWrite(PWMpin,i);delay(10);}}编程提示C语言的for循环语句比BASIC和其他电脑编程语言