设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7671|回复: 6

Arduino入门教程—补充二 如何编写扩展库

[复制链接]

签到天数: 503 天

[LV.9]以坛为家II

发表于 2013-7-12 09:31:04 | 显示全部楼层 |阅读模式
本帖最后由 AllBlue 于 2013-9-2 08:26 编辑

如何编写扩展库

Arduino扩展库的使用可以使得代码变的更简洁,编程也当然会更加容易。今天我们就学习一下如何编写一个属于自己的Arduino扩展库!!

首先,我们看一段代码:

  1. int pin = 13;

  2. void setup()
  3. {
  4.   pinMode(pin, OUTPUT);
  5. }

  6. void loop()
  7. {
  8.   dot(); dot(); dot();
  9.   dash(); dash(); dash();
  10.   dot(); dot(); dot();
  11.   delay(3000);
  12. }

  13. void dot()
  14. {
  15.   digitalWrite(pin, HIGH);
  16.   delay(250);
  17.   digitalWrite(pin, LOW);
  18.   delay(250);
  19. }

  20. void dash()
  21. {
  22.   digitalWrite(pin, HIGH);
  23.   delay(1000);
  24.   digitalWrite(pin, LOW);
  25.   delay(250);
  26. }
复制代码

在控制板运行它,它作用就是,控制板上的13脚连接的LED闪烁,发出SOS的求救信号!

了解这段代码后,就让我们来将它改写成函数库吧!!

一般扩展库包含几个文件:头文件(扩展名为*.h*),源代码文件(扩展名为*.cpp*)和关键字文件(.txt文件),有时候还会添加一个测试程序,如下图(图为Arduino官方扩展库EEPROM):

扩展库内容.jpg

好的,下面我们就来一步步实现它吧!第一步:编写头文件,创建一个.h文件(可以直接用Arduino IDE 创建,创建时要加后缀名,不然默认为pde格式)并命名为Morse.h,然后添加以下代码:

  1. /*
  2.   在这里加上一些关于作者、用途、日期、协议等注释
  3.   例如:
  4.     Morse.h — 用于多个LED闪烁变化的库。
  5.     2013.7创建,创建者:TSRobot
  6.     公共领域
  7. */
  8. #ifndef Morse_h //防止多次引用头文件
  9. #define Morse_h

  10. #include "Arduino.h"

  11. class Morse
  12. {
  13.   public:        //共有部分
  14.     Morse(int pin);
  15.     void dot();
  16.     void dash();

  17.   private:        //私有部分(用户无权使用)
  18.     int _pin;
  19. };

  20. #endif
复制代码

接下来,第二步:编写源代码文件,创建一个.cpp 文件并命名为Morse.cpp,添加以下代码:

  1. /*
  2.   在这里加上一些关于作者、用途、日期、协议等注释
  3.   例如:
  4.     Morse.cpp — 用于多个LED闪烁变化的库。
  5.     2013.7创建,创建者:TSRobot
  6.     公共领域
  7. */

  8. #include "Arduino.h"
  9. #include "Morse.h"

  10. Morse::Morse(int pin)        //构造函数
  11. {
  12.   pinMode(pin, OUTPUT);
  13.   _pin = pin;        //保存为私有变量,以便下面的函数调用
  14. }

  15. //工作方式,和直接写的代码很相似,只是名字有区别
  16. void Morse::dot()
  17. {
  18.   digitalWrite(_pin, HIGH);
  19.   delay(250);
  20.   digitalWrite(_pin, LOW);
  21.   delay(250);  
  22. }

  23. void Morse::dash()
  24. {
  25.   digitalWrite(_pin, HIGH);
  26.   delay(1000);
  27.   digitalWrite(_pin, LOW);
  28.   delay(250);
  29. }
复制代码

第三步:写出关键字,创建一个keywords.txt文件,添加如下关键字:

       Morse   KEYWORD1


       dash    KEYWORD2


       dot     KEYWORD2

其中最关键的是:每行关键字的后面跟的是Tab键(而不是空格);关键字的作用其实就是然软件认识这个字,然后以特别的颜色显示出来,如下图:

程序.jpg


下面就将这三个文件保存到一个名为Morse的文件夹中,然后将它放到Arduino文件夹的library文件夹中,然后从新启动软件,这样库文件就可以使用了。


下面,我们就来调用一下它:

  1. #include <Morse.h>

  2. Morse morse(13);

  3. void setup()
  4. {
  5. }

  6. void loop()
  7. {
  8.   morse.dot(); morse.dot(); morse.dot();
  9.   morse.dash(); morse.dash(); morse.dash();
  10.   morse.dot(); morse.dot(); morse.dot();
  11.   delay(3000);
  12. }
复制代码

上面的程序和之前的程序功能上是相同的,大家可以对比一下有何不同;

当然如果你还想添加别的引脚,也是可以的,只要再创建一个构造函数就可以了,例如:

  1. Morse morse(13);
  2. Morse morse2(12);
复制代码

这样的话,12引脚也就可以使用了,使用下面代码后,_pin就变为12脚了:

  1. morse2.dot()
复制代码

大家也可以将上面调用的例子,保存在刚才的文件夹中,这样别人使用你的库文件时,就会大概了解用法了哦~~~


官方教程地址:
Writing a Library for Arduino

该用户从未签到

发表于 2013-10-29 18:36:21 | 显示全部楼层
这个很好,学习了
回复 支持 反对

使用道具 举报

签到天数: 2 天

[LV.1]初来乍到

发表于 2015-6-24 17:07:55 | 显示全部楼层
学习了,受益。
回复 支持 反对

使用道具 举报

签到天数: 503 天

[LV.9]以坛为家II

 楼主| 发表于 2015-6-24 19:51:04 | 显示全部楼层
cys 发表于 2015-6-24 17:07
学习了,受益。

多谢支持
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-8-24 20:04:10 | 显示全部楼层
高阶用法,有点类似JAVA的PACKAGE;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135  

GMT+8, 2017-10-24 02:44 , Processed in 0.208534 second(s), 28 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表