- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
怎样给arduino编写库文件
给Arduino编写库文件
Loki于2014-8-29整理
本文档解释了如果给Arduino创建库文件。先从描述一个会闪烁的摩斯码代码开始,再解释怎么样把它转换成库文件。这样你写的代码就能很容易地让别人使用,同时也方便你进行修改并更新它。
如果想了解更多,请查看 HYPERLINK http://arduino.cc/en/Reference/APIStyleGuide API Style Guide,一个让你的库制作一个良好的Arduino API风格的指导。
我们以一个简单的摩斯码工程代码开始:
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引脚上闪烁来发送一个SOS信号(一个求救信号)。
我们需要把该工程一些不一样的地方放到我们的库里面去。第一,当然我们需要真正起作用(制造闪光)的dot()和dash()函数。第二,需要一个给函数用来确定哪个引脚需要使用的ledPin变量。最后,代码中调用了一个把引脚初始化为输出的函数pinMode()。
让我们开始把这个工程转换成一个库!
你最少需要两个库文件:一个头文件(扩展文件.h)和一个源文件(扩展 .cpp)。这个头文件为库做了各种定义:把所有基础的东西都罗列在里面了;而源文件则包含着真实的代码。我们会把我们的库叫做“摩斯码”,所以我们的头文件就是Morse.h。让我们来看一看它是什么样的。它刚开始看起来有点奇怪,但是当你看了它的源代码之后,你就会觉得它越来越亲切了。
头文件的核心包括了:把库的每一个函数列出来;声明了一个有你需要变量的类:
class?Morse{??public:? ? Morse(int?pin);? ??void?dot();? ??void?dash();? private:? ??int?_pin;};
一个类是把所有的函数和变量都集中到了一个地方。这些函数和变量可以是公共的(public),意味着能让使用你的库的??来调用这些函数和变量;当是私有的(private)时候,这些函数和变量只能在类里面进行调用。每一个类都有一个特殊的函数被叫做构造器(constructor),一个用来创建类的实例的函数。这个构造器有着和类一样的名字,同时不能有返回类型。
你还需要对头文件做两件事情。一个是需要使用#include声明你调用了Arduino语言的标准类型和变量(这个会自动在普通的工程中进行声明,但是不会在库中自动声明)。它看起来像这样(大概就像事先给类进行定义):
#include Arduino.h
最后,都会使用如下奇怪的结构把整个头文件放到里面去:
#ifndef Morse_h#define Morse_h// the #include statment and code go here...#endif
显而易见,这样的结构是预防某人不小心调用了两次你的库。
最后,你通常会对库的名字在最开始的部分进行说明,简单的描述它是干嘛用的,谁写的,什么时候写的,还有谁可以使用它。
让我们看一下完整的头文件:
/*? Morse.h - Library for flashing Morse code.? Created by David A. Mellis, November 2, 2007.? Released into the public domain.*/#ifndef Morse_h#define Morse_h#include Arduino.hclass?Morse{??public:? ? Morse(int?pin);? ??void?dot();? ??void?dash();? private:? ??int?_pin;};#endif
现在让我们过一遍源码的各个部分,Morse.cpp。
第一需要把两个声明包含进来。这些声明能够调用标准的Arduino函数
文档评论(0)