穷创客教育之Arduino编程第七课:自定义函数在花式流水灯中的应用

网友投稿 2019-09-26 14:26

穷创客教育之Arduino编程第七课:自定义函数在花式流水灯中的应用

如果你想编一些复杂点的程序,实现一些更眩的功能,你会发现你的loop(  )程序会写得非常的长,程序读起来很吃力。能不能将一个功能的实现写在一个地方,如果要用的时候只要在loop(  )主程序里调用一下就可以了呢? 答案当然是可以的,那就是自定义函数。简单来说函数就是一个封装了很多语句的代码块。

我们前面学习的setup(  )、loop(  )、pinMode(  )和digitalWrite(  )是系统给我们编写好的函数,被称为系统函数,有时我们要实现我们自己的功能也需要编写一些函数,这些被称为自定义函数。今天我们来学习无返回值无参数类型的自定义函数。

一、函数声名:函数在loop(  )函数之上或之下的任何其他函数之外声明。

void 函数名(   ){

   程序块;

}

例如下面代码实现的功能是让led端口上的LED实现闪烁。注意,函数的定义在loop()循环之外。

void ledflash()  //定义一个名为ledflash的函数,

{             //函数的具体代码写在{  }内

digitalWrite(led,HIGH);   

delay(100);              

digitalWrite(led,LOW);    

delay(100);      

}   

二、函数调用:

函数名( );

例如调用上面的函数:ledflash(   );

三、实验电路

https://cdn.china-scratch.com/timg/190928/1426301239-0.jpg

四、编写程序

//以下/*和 */之间的代码为语句 ,程序不执行

/*********通过下载测试,全部代码分为 2个子事件:*****************

style( )函数: 1-8号灯逐个点亮,然后 8-1逐个熄灭。

flash(  )函数:1-8号灯亮,延时 200ms,1-8号灯熄灭,延时200ms,闪烁两次。此处用到循环嵌套。

****************************************************************/

//led 灯花样显示样式子程序

void style( )

{

  for(int j=2;j<=7;j++)//每隔200ms依次点亮2-7引脚相连的led灯

  {

    digitalWrite(j,HIGH);//点亮j引脚相连的led 灯

    delay(200);//延时200ms

   }

    for(int j=7;j>=1;j--)//每隔200ms依次熄灭7-2引脚相连的led灯

    {

      digitalWrite(j,LOW);//熄灭j引脚相连的led 灯

      delay(200);//延时200ms

     }  

}

//灯闪烁子程序

void flash(  )

{    

   for(int k=0;k<=1;k++)//闪烁两次

   {

     for(int j=2;j<=7;j++){//点亮2-7引脚相连的led灯

        digitalWrite(j,HIGH);//点亮与j引脚相连的led灯

     }

     delay(200);//延时200ms

     for(int j=2;j<=7;j++){//熄灭2-7引脚相连的led灯

        digitalWrite(j,LOW);//熄灭与j引脚相连的led灯

     }

     delay(200);//延时200ms

   }

}

void setup()

{

  for(i=2;i<=7;i++){//依次设置2-7个数字引脚为输出模式

    pinMode(i,OUTPUT);//设置第i个引脚为输出模式

  }

}

void loop()

{

  style();//调用样式函数

  flash();//调用闪烁函数

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com