欢迎来到天天文库
浏览记录
ID:62159355
大小:22.10 KB
页数:12页
时间:2021-04-19
《如何给arduino编写库文件.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、给Arduino编写库文件Loki于2014-8-29整理本文档解释了如果给Arduino创建库文件。先从描述一个会闪烁的摩斯码代码开始,再解释怎么样把它转换成库文件。这样你写的代码就能很容易地让别人使用,同时也方便你进行修改并更新它。如果想了解更多,请查看APIStyleGuide,一个让你的库制作一个良好的ArduinoAPI风格的指导。我们以一个简单的摩斯码工程代码开始:int pin = 13;void setup(){ pinMode(pin, OUTPUT);}void loop(){ dot(); dot(); d
2、ot(); 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引脚上闪烁来发送
3、一个SOS信号(一个求救信号)。我们需要把该工程一些不一样的地方放到我们的库里面去。第一,当然我们需要真正起作用(制造闪光)的dot()和dash()函数。第二,需要一个给函数用来确定哪个引脚需要使用的ledPin变量。最后,代码中调用了一个把引脚初始化为输出的函数pinMode()。让我们开始把这个工程转换成一个库!你最少需要两个库文件:一个头文件(扩展文件.h)和一个源文件(扩展.cpp)。这个头文件为库做了各种定义:把所有基础的东西都罗列在里面了;而源文件则包含着真实的代码。我们会把我们的库叫做“摩斯码”,所以我们的头文件就
4、是Morse.h。让我们来看一看它是什么样的。它刚开始看起来有点奇怪,但是当你看了它的源代码之后,你就会觉得它越来越亲切了。头文件的核心包括了:把库的每一个函数列出来;声明了一个有你需要变量的类:class Morse{ public: Morse(int pin); void dot(); void dash(); private: int _pin;};一个类是把所有的函数和变量都集中到了一个地方。这些函数和变量可以是公共的(public),意味着能让使用你的库的人来调用这些函数和变量;当是私有的(privat
5、e)时候,这些函数和变量只能在类里面进行调用。每一个类都有一个特殊的函数被叫做构造器(constructor),一个用来创建类的实例的函数。这个构造器有着和类一样的名字,同时不能有返回类型。你还需要对头文件做两件事情。一个是需要使用#include声明你调用了Arduino语言的标准类型和变量(这个会自动在普通的工程中进行声明,但是不会在库中自动声明)。它看起来像这样(大概就像事先给类进行定义):#include"Arduino.h"最后,都会使用如下奇怪的结构把整个头文件放到里面去:#ifndefMorse_h#defineMo
6、rse_h//the#includestatmentandcodegohere...#endif显而易见,这样的结构是预防某人不小心调用了两次你的库。最后,你通常会对库的名字在最开始的部分进行说明,简单的描述它是干嘛用的,谁写的,什么时候写的,还有谁可以使用它。让我们看一下完整的头文件:/* Morse.h-LibraryforflashingMorsecode. CreatedbyDavidA.Mellis,November2,2007. Releasedintothepublicdomain.*/#ifndefMorse_h#
7、defineMorse_h#include"Arduino.h"class Morse{ public: Morse(int pin); void dot(); void dash(); private: int _pin;};#endif现在让我们过一遍源码的各个部分,Morse.cpp。第一需要把两个声明包含进来。这些声明能够调用标准的Arduino函数,还可以调用你在头文件以定义的内容。#include"Arduino.h"#include"Morse.h"下面我们来说说构造器。它解释了当某人使用你的类创建了
8、一个实例之后会发生什么。这种情况下,用户最关心的是他们能够使用哪个引脚。我们把这个引脚配置成输出并将它保存到一个私有变量里,用来给其他的函数进行调用。Morse::Morse(int pin){ pinMode(pin, OUTPUT); _pi
此文档下载收益归作者所有