云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > arduino从零开始学 - 图文

arduino从零开始学 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/17 6:37:05

开始Arduino之旅 第2章 }

delayTime=1000; //当延时小于0.1s时校准延时时间为1s } else { delayTime=delayTime-100; //大于或等于0.1s时将延时时间缩短 }

if-else语句还可以多次连用来进行多次选择判断。使用时应判断准确逻辑关系,以避免产生错误。

2.9 Arduino语法——循环语句

循环语句用来重复执行某一些语句,为了避免死循环,必须在循环语句中加入条件,满足条件时执行循环,不满足条件时退出循环。本节介绍for循环和while循环。

2.9.1 for循环

在loop()函数中,程序执行完一次之后会返回loop中重新执行,在内建指令中同样有一种循环语句可以进行更准确的循环控制——for语句,for循环语句可以控制循环的次数。

for循环包括3个部分:

for(初始化,条件检测,循环状态){程序语句}

初始化语句是对变量进行条件初始化,条件检测是对变量的值进行条件判断,如果为真则运行for循环语句大括号中的内容,若为假则跳出循环。循环状态则是在大括号语句执行完之后,执行循环状态语句,之后重新执行条件判断语句。

【示例6】 使用计数器和if语句的闪灯程序

同样以闪灯程序为例,这次是让小灯闪烁20次之后停顿3秒。在没有学习for循环语句之前,用if语句是完全可以实现的。由于loop()函数本身就可以进行循环,因此,设置一个计数器再用if语句进行判断便可以实现,如程序2-9所示。

程序2-9:使用计数器和if语句的闪灯程序

int ledPin = 13;

int delayTime = 1000; int delayTime2 = 3000; int count=0;

void setup() { pinMode(ledPin,OUTPUT); }

void loop()

//定义延时变量delayTime为1s //定义延时变量delayTime2为2s //定义计数器变量并初始化为0

·37· Arduino开发从零开始学 { }

digitalWrite(ledPin,HIGH); delay(delayTime);

digitalWrite(ledPin,LOW); delay(delayTime); if(count==20) { delay(delayTime2); }

//当计数器数值为20时,延时3s

【示例7】 使用for语句的闪灯程序

如果使用for语句,就可以在一次loop循环中实现。下面是一个具体的示例。 程序2-10:使用for语句的闪灯程序

int ledPin = 13;

int delayTime = 1000; int delayTime2 = 3000;

void setup() { pinMode(ledPin,OUTPUT); }

void loop() { digitalWrite(ledPin,HIGH); delay(delayTime); digitalWrite(ledPin,LOW); delay(delayTime); for(int count=0;count<20;count ++) { delay(delayTime2); } }

//定义延时变量delayTime为1s //定义延时变量delayTime2为2s

//执行20次延时3s

这段代码虽然可以在一次loop语句中完成闪烁20次后延时3秒,但是loop语句会执行时间过长,Sketch中的loop()函数经常可以用来检查是否有中断或者其他信号,如果处理器被一个循环占用大多数时间,难免会增加程序的响应时间。因此比较而言,用if语句和count计数器更方便。

2.9.2 while循环

相比for,while语句更简单一些,但是实现的功能和for是一致的。while语句语法为“while(条件语句){程序语句}”。条件语句结果为真时则执行循环中的程序语句,如果条件语句为假时则跳出while循环语句。相比for语句,while语句循环状态可以写到程序语句中,更方便易读。

while的语法如下:

·38· 开始Arduino之旅 第2章 while(count<20) {

…… }

//满足( )内的条件时,执行循环中的内容

【示例8】 使用while语句的闪灯程序

同样以小灯闪烁20次延时3秒为例,用while语句也可以实现。

程序2-11:使用while语句的闪灯程序

int ledPin = 13;

int delayTime = 1000; int delayTime2 = 3000; int count=0;

void setup() { pinMode(ledPin,OUTPUT); }

void loop() { while(count<20) { digitalWrite(ledPin,HIGH); delay(delayTime); digitalWrite(ledPin,LOW); delay(delayTime); count++; } }

//定义延时变量delayTime为1s //定义延时变量delayTime2为2s //定义计数器变量并初始化为0

//当计数器数值小于20时,执行循环中的内容

//计数器数值自增1

2.10 Arduino语法—函数

在编写程序的过程中,有时一个功能需要多次使用,反复写同一段代码既不方便又难以维护。开发语言提供的函数无法满足特定的需求,同时,一些功能写起来并不容易,为了方便开发和阅读维护,函数的重要性便不言而喻,使用函数可以使程序变得简单。

函数就像一个程序中的小程序,一个函数实现的功能可以是一个或多个功能,但是函数并不是实现的功能越多越强大。优秀的函数往往是功能单一的,调用起来非常方便。一个复杂的功能很多情况下是由多个函数共同完成的。

【示例9】 使用闪灯函数的闪灯程序

继续以闪灯为例,LED灯要闪烁20次,闪灯这个功能可以封装到一个函数里面,当多次需要

·39· Arduino开发从零开始学 闪灯的时候便可以直接调用这个闪灯函数了。

程序2-12:使用闪灯函数的闪灯程序

int ledPin = 13;

int delayTime = 1000; int delayTime2 = 3000;

void setup() { pinMode(ledPin,OUTPUT); }

void loop() { for(int count=0;count<20;count ++) { flash(); } delay(delayTime2); }

void flash() { digitalWrite(ledPin,HIGH); delay(delayTime); digitalWrite(ledPin,LOW); delay(delayTime); }

//定义延时变量delayTime为1s //定义延时变量delayTime2为2s

//调用20次闪烁函数

//延时3s

//定义无参数的闪灯函数

在该程序里,调用的flash()函数实际上就是LED闪烁的代码,相当于程序运行到那里便跳入该4行闪灯代码中,其函数非常简单。在这个例子中,flash()函数是一个空类型的函数,即没有任何返回值。flash()函数也没有任何参数,有些函数需要接受参数才能执行特定的功能。

【示例10】 改进使用闪灯函数的闪灯程序

所谓的函数参数,就是函数中需要传递值的变量、常量、表达式、函数等。接下来的例子会将闪灯函数改造一下,使其闪烁时间可以变化。

程序2-13:改进使用闪灯函数的闪灯程序

int ledPin = 13;

int delayTime = 1000; int delayTime2 = 3000;

void setup() { pinMode(ledPin,OUTPUT); } ·40·

//定义延时变量delayTime为1s //定义延时变量delayTime2为2s

搜索更多关于: arduino从零开始学 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

开始Arduino之旅 第2章 } delayTime=1000; //当延时小于0.1s时校准延时时间为1s } else { delayTime=delayTime-100; //大于或等于0.1s时将延时时间缩短 } if-else语句还可以多次连用来进行多次选择判断。使用时应判断准确逻辑关系,以避免产生错误。 2.9 Arduino语法——循环语句 循环语句用来重复执行某一些语句,为了避免死循环,必须在循环语句中加入条件,满足条件时执行循环,不满足条件时退出循环。本节介绍for循环和while循环。 2.9.1 for循环 在loop()函数中,程序执行完一次之后会返回loop中重新执行,在内建指令中同样有一种循环语句可以进行更准确的循环控制——for语句,for循环

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com