新浪博客

第七节   Arduino的自定义函数和库

2015-04-22 14:53阅读:
一、Arduino自定义函数
如果你想编一些复杂点的程序,实现一些更眩的功能,你会发现你的loop程序会写得非常的长,有时候会搞不清楚具体的一个功能到底写在哪行了。能不能将一个功能的实现写在一个地方,如果要用的时候只要在loop主程序里调用一下就可以了呢? 答案当然是可以的,如果你已经学过了c语言等等,你或许已经知道如何来做了,那就是自定义函数。
自定义函数应该可以分为四类:
1、第一类是无返回值无参数类型。
例如你自定义一个函数:
void ledflash() //定义一个名为ledflash的函数,
{ //函数的具体内容写在{}
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
delay(1000);
br>
} //注意,函数的定义在loop()循环之外。

那么只要在loop()主程序内写上: ledflash();
程序就自动回调用ledflash函数,执行函数内容。
2、第二类是无返回值有参数类型。
运行第一类函数只能运行事先写好的程序,无法在调用的时候控制。那么这第二类函数就可以加入一个参数来控制了,例如:
void ledflash(int i) //定义一个名为ledflash的函数,
{ //函数的具体内容写在{}
digitalWrite(led,HIGH);
delay(i);
digitalWrite(led,LOW);
delay(i);
} //注意,函数的定义在loop()循环之外。

这类函数在调用的时候需要给它一个参数,例如: ledflash(1000);
那么在调用函数的时候就会给函数内的i变量赋值为1000
3、第三类是有返回值无参数类型
前两类函数都只是实现一个具体的功能,函数本身不会返回一个结果,那么第三类函数就可以实现运行函数后会返回一个值,例如:
int analogzhi() //首先用int定义这个函数返回的值得类型为int
{
int i; //定义一个变量用于返回值
i=analogRead(A0);
return(i); //返回i的值
}

在调用的时候可以如下所示:
int a; //先定义一个变量
a=analogzhi(); //令这个变量等于analogzhi函数的返回值
4、第四类当然是既有返回值又有参数的函数
例如:
int jisuan(int i)
{
int j;
j=i*10;
return(j);
}

在调用的时候如下所示:
int a; //先定义一个变量
a=jisuan(2); //令这个变量等于jisuan函数参数为2时的值

现在你已经学习了如何使用函数来使你的程序变简单了,那么来尝试做一个复杂点的吧,例如,使用一个按钮模块,三个Led灯,每按一下按钮,Led灯就变换一种闪烁方式。注意,可以把每种闪烁方式写成一个函数,这样在loop主程序中简单得调用这些函数就可以了。

二、Arduino的库
使用了函数,程序就变得更清楚明白了。但是有些时候,如果我编了一段可以实现一个复杂功能的函数,又想给别人用时,如果直接来拷贝函数的话,往往会出现很多问题。如果能把自己写的一段函数写在另外的文件中,其他人只要拷贝了你的文件,然后再程序中直接调用你的文件就可以使用你编的函数,那大家就可以共享自己的程序了。这就是Arduino的库函数,其实我们在使用analogRead之类的函数时,已经在使用了,只是这些是Arduino自带的库,其实我们也可以自己定义自己的库函数。
当然,写库函数这件事情现在对我们来说有点难,我们先学习如何使用它们吧。下面我们来玩一种液晶屏,一般来说如果用Arduino来驱动液晶屏的话要使用很复杂的一些程序,不过已经有人帮我们写好了这些函数,我们只用调用这些库就可以很简单的使用了,先来认识一下1602液晶屏吧:
第七节 <wbr> <wbr> <wbr>Arduino的自定义函数和库
第七节 <wbr> <wbr> <wbr>Arduino的自定义函数和库
可以看到这种IIC接口的LCD1602有四个端口,其中除了电源的两个端口外还有SDASDL两个接口,在连接的时候将SDA连接ArduinoA4端,SCL连接ArduinoA5 端。现在打开浏览器,输入http://pan.baidu.com/s/132VWa,下载我共享的库函数LiquidCrystal_I2C.rar,下载好后请解压缩到名为LiquidCrystal_I2C的文件夹,得到名为LiquidCrystal_I2C的文件夹,双击文件夹,确定里面有两个文件夹和4个文件,而不是再一层的LiquidCrystal_I2C的文件夹。然后我们将这个LiquidCrystal_I2C的文件夹复制到Arduino程序目录下的libraries文件夹内。如果你是直接安装的,那么这个libraries文件夹在C:\ProgramFiles\Arduino\libraries。复制好后,你就可以直接使用这个库函数了。你甚至可以在Arduino程序的文件-示例里找到LiquidCrystal_I2C的例程,不过我们先不用这几个例程,直接写入以下程序:
#include
#include //这里就是调用LiquidCrystal_I2C库函数
LiquidCrystal_I2Clcd(0x27,20,4); //LiquidCrystal_I2C的一些初始化定义
void setup()
{
lcd.init(); // 初始化lcd
}

void loop()
{
lcd.init();
lcd.backlight(); //背光控制
lcd.setCursor(3,0); //第一个字符的位置
lcd.print('Hello, world!'); //输出字符到lcd
lcd.setCursor(2,1);
lcd.print('good!');
delay(10000);
}

可以看到,LiquidCrystal_I2C库已经帮我们写好了如何在lcd上输出字符的函数,现在,尝试着用这块lcd来做点什么吧,例如结合温度模块做个数字温度计等等。

我的更多文章

下载客户端阅读体验更佳

APP专享