本帖最后由 AllBlue 于 2013-9-2 08:26 编辑
如何编写扩展库
Arduino扩展库的使用可以使得代码变的更简洁,编程也当然会更加容易。今天我们就学习一下如何编写一个属于自己的Arduino扩展库!! 首先,我们看一段代码: - int pin = 13;
- void setup()
- {
- pinMode(pin, OUTPUT);
- }
- void loop()
- {
- dot(); dot(); dot();
- dash(); dash(); dash();
- dot(); dot(); dot();
- delay(3000);
- }
- void dot()
- {
- digitalWrite(pin, HIGH);
- delay(250);
- digitalWrite(pin, LOW);
- delay(250);
- }
- void dash()
- {
- digitalWrite(pin, HIGH);
- delay(1000);
- digitalWrite(pin, LOW);
- delay(250);
- }
复制代码在控制板运行它,它作用就是,控制板上的13脚连接的LED闪烁,发出SOS的求救信号! 了解这段代码后,就让我们来将它改写成函数库吧!! 一般扩展库包含几个文件:头文件(扩展名为*.h*),源代码文件(扩展名为*.cpp*)和关键字文件(.txt文件),有时候还会添加一个测试程序,如下图(图为Arduino官方扩展库EEPROM):
好的,下面我们就来一步步实现它吧!第一步:编写头文件,创建一个.h文件(可以直接用Arduino IDE 创建,创建时要加后缀名,不然默认为pde格式)并命名为Morse.h,然后添加以下代码: - /*
- 在这里加上一些关于作者、用途、日期、协议等注释
- 例如:
- Morse.h — 用于多个LED闪烁变化的库。
- 2013.7创建,创建者:TSRobot
- 公共领域
- */
- #ifndef Morse_h //防止多次引用头文件
- #define Morse_h
- #include "Arduino.h"
- class Morse
- {
- public: //共有部分
- Morse(int pin);
- void dot();
- void dash();
- private: //私有部分(用户无权使用)
- int _pin;
- };
- #endif
复制代码接下来,第二步:编写源代码文件,创建一个.cpp 文件并命名为Morse.cpp,添加以下代码: - /*
- 在这里加上一些关于作者、用途、日期、协议等注释
- 例如:
- Morse.cpp — 用于多个LED闪烁变化的库。
- 2013.7创建,创建者:TSRobot
- 公共领域
- */
- #include "Arduino.h"
- #include "Morse.h"
- Morse::Morse(int pin) //构造函数
- {
- pinMode(pin, OUTPUT);
- _pin = pin; //保存为私有变量,以便下面的函数调用
- }
- //工作方式,和直接写的代码很相似,只是名字有区别
- void Morse::dot()
- {
- digitalWrite(_pin, HIGH);
- delay(250);
- digitalWrite(_pin, LOW);
- delay(250);
- }
- void Morse::dash()
- {
- digitalWrite(_pin, HIGH);
- delay(1000);
- digitalWrite(_pin, LOW);
- delay(250);
- }
复制代码第三步:写出关键字,创建一个keywords.txt文件,添加如下关键字: Morse KEYWORD1
dash KEYWORD2
dot KEYWORD2 其中最关键的是:每行关键字的后面跟的是Tab键(而不是空格);关键字的作用其实就是然软件认识这个字,然后以特别的颜色显示出来,如下图:
下面就将这三个文件保存到一个名为Morse的文件夹中,然后将它放到Arduino文件夹的library文件夹中,然后从新启动软件,这样库文件就可以使用了。
下面,我们就来调用一下它: - #include <Morse.h>
- Morse morse(13);
- void setup()
- {
- }
- void loop()
- {
- morse.dot(); morse.dot(); morse.dot();
- morse.dash(); morse.dash(); morse.dash();
- morse.dot(); morse.dot(); morse.dot();
- delay(3000);
- }
复制代码上面的程序和之前的程序功能上是相同的,大家可以对比一下有何不同; 当然如果你还想添加别的引脚,也是可以的,只要再创建一个构造函数就可以了,例如: - Morse morse(13);
- Morse morse2(12);
复制代码这样的话,12引脚也就可以使用了,使用下面代码后,_pin就变为12脚了:
大家也可以将上面调用的例子,保存在刚才的文件夹中,这样别人使用你的库文件时,就会大概了解用法了哦~~~
官方教程地址:
Writing a Library for Arduino
|