Arduino 基础.docx

上传人:b****5 文档编号:7662928 上传时间:2023-01-25 格式:DOCX 页数:11 大小:43.70KB
下载 相关 举报
Arduino 基础.docx_第1页
第1页 / 共11页
Arduino 基础.docx_第2页
第2页 / 共11页
Arduino 基础.docx_第3页
第3页 / 共11页
Arduino 基础.docx_第4页
第4页 / 共11页
Arduino 基础.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Arduino 基础.docx

《Arduino 基础.docx》由会员分享,可在线阅读,更多相关《Arduino 基础.docx(11页珍藏版)》请在冰豆网上搜索。

Arduino 基础.docx

Arduino基础

结构部分

setup()

在Arduino中程序运行时将首先调用setup()函数。

用于初始化变量、设置针脚的输出\输入类型、配置串口、引入类库文件等等。

每次Arduino上电或重启后,setup函数只运行一次。

示例

 

intbuttonPin=3;

voidsetup()

{

Serial.begin(9600);

pinMode(buttonPin,INPUT);

voidloop()

{

//...

}

loop()

在 setup() 函数中初始化和定义了变量,然后执行loop()函数。

顾名思义,该函数在程序运行过程中不断的循环,根据一些反馈,相应改变执行情况。

通过该函数动态控制Arduino主控板。

示例

intbuttonPin=3;

 //setup中初始化串口和按键针脚.

voidsetup()

{

beginSerial(9600);

pinMode(buttonPin,INPUT);

//loop中每次都检查按钮,如果按钮被按下,就发送信息到串口

 voidloop()

{

if(digitalRead(buttonPin)==HIGH)

serialWrite('H');

else

serialWrite('L');

 delay(1000);

}

结构控制

if(条件判断语句)和==、!

=、<、>(比较运算符)

if语句与比较运算符一起用于检测某个条件是否达成,如某输入值是否在特定值之上等。

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,HIGH);}

 

if(x>120){

digitalWrite(LEDpin1,HIGH);

digitalWrite(LEDpin2,HIGH);

}//以上所有书写方式都正确

在小括号里求值的表达式,需要以下操作符:

比较运算操作符:

x==y(x等于y)

x!

=y(x不等于y)

x

x>y(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,这也不是我们所期待的结果。

if的另外一种分支条件控制结构是 if...else 形式。

if/else

if/else是比if更为高级的流程控制语句,它可以进行多次条件测试。

比如,检测模拟输入的值,当它小于500时该执行哪些操作,大于或等于500时执行另外的操作。

代码如下:

if(pinFiveInput<500)

{

//执行A操作

}

else

{

//执行B操作

}

else可以进行额外的if检测,所以多个互斥的条件可以同时进行检测。

测试将一个一个进行下去,直到某个测试结果为真,此时该测试相关的执行语句块将被运行,然后程序就跳过剩下的检测,直接执行到if/else的下一条语句。

当所有检测都为假时,若存在else语句块,将执行默认的else语句块。

注意elseif语句块可以没有else语句块。

elseif分支语句的数量无限制。

if(pinFiveInput<500)

{

//执行A操作

}

elseif(pinFiveInput>=1000)

{

//执行B操作

}

else

{

//执行C操作

}

另外一种进行多种条件分支判断的语句是switchcase语句。

for语句

描述

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和其他电脑编程语言的for语句更灵活。

除了分号以外,其他3个元素都能省略。

同时,初始化,条件,增量计算可以是任何包括无关变量的有效C语句,任何C数据类型包括float。

这些不寻常的for语句可能会解决一些困难的编程问题。

例如,在增量计数中使用乘法可以得到一个等比数列:

for(intx=2;x<100;x=x*1.5){

println(x);

}

生成:

2,3,4,6,9,13,19,28,42,63,94

另一个例子,使用for循环使LED产生渐亮渐灭的效果:

voidloop()

{

intx=1;

for(inti=0;i>-1;i=i+x){

analogWrite(PWMpin,i);

if(i==255)x=-1;//在峰值转变方向

delay(10);

}

}

switch/case语句

和if语句相同,switch…case通过程序员设定的在不同条件下执行的代码控制程序的流程。

特别地,switch语句将变量值和case语句中设定的值进行比较。

当一个case语句中的设定值与变量值相同时,这条case语句将被执行。

关键字break可用于退出switch语句,通常每条case语句都以break结尾。

如果没有break语句,switch语句将会一直执行接下来的语句(一直向下)直到遇见一个break,或者直到switch语句结尾。

例子

switch(var){

case1:

//当var等于1时,执行一些语句

break;

case2

//当var等于2时,执行一些语句

break;

default:

//如果没有任何匹配,执行default

//default可有可不有

}

语法

switch(var){

caselabel:

//声明

break;

caselabel:

//声明

break;

default:

//声明

}

参数

var:

用于与下面的case中的标签进行比较的变量值

label:

与变量进行比较的值

while循环

描述

while循环会无限的循环,直到括号内的判断语句变为假。

必须要有能改变判断语句的东西,要不然while循环将永远不会结束。

这在您的代码表现为一个递增的变量,或一个外部条件,如传感器的返回值。

语法

while(表达){

//语句

}

参数

表达:

为真或为假的一个计算结果

例子

var=0;

while(var<200){

//重复一件事200遍

var++

}

do...while

do…while循环与while循环运行的方式是相近的,不过它的条件判断是在每个循环的最后,所以这个语句至少会被运行一次,然后才被结束。

do

{

//语句

}while(测试条件);

例子

do

{

delay(50);//等待传感器稳定

X=readSensors();//检查传感器取值

 

}while(X<100);//当x小于100时,继续运行

break

break用于退出do,for,while循环,能绕过一般的判断条件。

它也能够用于退出switch语句。

例子

for(x=0;x<255;x++)

{

digitalWrite(PWMpin,x);

sens=analogRead(sensorPin);

if(sens>threshold){//超出探测范围

x=0;

break;

}

delay(50);

}

return

终止一个函数,如有返回值,将从此函数返回给调用函数。

语法:

return;

returnvalue;//两种形式均可

参数

value:

任何变量或常量的类型

例子:

一个比较传感器输入阈值的函数

intcheckSensor(){

if(analogRead(0)>400){

return1;}

else{

return0;

}

}

return关键字可以很方便的测试一段代码,而无需“commentout(注释掉)”大段的可能存在bug的代码。

voidloop(){

 

//写入漂亮的代码来测试这里。

 

return;

 

//剩下的功能异常的程序

//return后的代码永远不会被执行

}

goto

程序将会从程序中已有的标记点开始运行

语法

label:

gotolabel;//从label处开始运行

提示

不要在C语言中使用goto编程,某些C编程作者认为goto语句永远是不必要的,但用得好,它可以简化某些特定的程序。

许多程序员不同意使用goto的原因是,​​通过毫无节制地使用goto语句,很容易创建一个程序,这种程序拥有不确定的运行流程,因而无法进行调试。

的确在有的实例中goto语句可以派上用场,并简化代码。

例如在一定的条件用if语句来跳出高度嵌入的for循环。

例子

for(byter=0;r<255;r++){

for(byteg=255;g>-1;g--){

for(byteb=0;b<255;b++){

if(analogRead(0)>250){

gotobailout;

}

//更多的语句...

}

}

}

bailout:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1