收藏官网首页
查看: 21479|回复: 0

[问答] 为Arduino编写函数库2

57

主题

156

帖子

716

积分

高级会员

Rank: 4

积分
716
跳转到指定楼层
楼主
发表于 2016-9-1 10:45:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
校园创客福利
下面终于到了我们转换实际代码的时刻了。除了Morse::和_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);}
好,让我们看看Morse.cpp全貌吧:
/*  Morse.cpp - Library for flashing Morse code.  Created by David A. Mellis, November 2, 2007.  Released into the public domain.*/ #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);}
这就是所有要做的工作(当然还有一些别的选项,容后再述)。来看看怎么使用这个函数库吧。
  • 在你的代码库目录里(sketchbook中的libraries目录),创建一个叫Morse的子目录
  • 把Morse.h和Morse.cpp拷贝到Morse目录里
  • 启动Arduino IDE,打开Sketch > Import Library菜单,此时应能看到Morse菜单项。

本函数库将与使用它的代码一起编译。若编译不成功,请确认这些文件的扩展名是.cpp和.h,而不是.pde或.txt之类。
让我们用刚创建的函数库来重写SOS程序吧:
#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);}
与之前的程序相比,有一些不同:
加了一个#include语句。这条语句让程序可以使用Morse库且包含了对应的代码,最终下载到Arduino板上。若不再需要某个函数库,则应删除对应的#include语句,以减少生成的程序大小,节约空间。
创建了Morse类的一个实例:morse:
Morse morse(13);
当这行代码被执行时(实际上这行代码在setup函数之前执行),将传入参数(本例中的参数是13)并调用Morse类的构造函数。
注意setup()函数现在里面没语句了,因为原先对pinMode()的调用已经转移到函数库的构造函数里了。
最后,为了调用dot()和dash()成员函数,需要在之前加上morse.这样的前缀—-需要使用的实例名。可以在程序里定义多个实例,每个实例拥有各自的管脚(保存在每个实例自己的_pin变量里)。调用某个实例的成员函数,使用的就是该实例的成员变量。如下例:
Morse morse(13);Morse morse2(12);
在调用morse2.dot()时,_pin为12。
新程序里关于Morse函数库的内容无法被IDE识别和高亮。很不幸的是,目前Arduino的IDE无法自动识别自定义函数库里的内容(这个功能应该有),所以需要给Arduino一点小帮助:在Morse的文件夹里,创建一个叫keywords.txt文件,内容如下:
Morse   KEYWORD1dash    KEYWORD2dot     KEYWORD2
每一行均由关键字的名字、TAB键(非空格)、关键字种类顺序组成。类名是KEYWORD1,将被高亮成橘黄色;函数名是KEYWORD2,将被高亮成棕色。重启Arduino IDE后这些设置将生效。
若在函数库的文件夹内包含一些使用例子,会让库更易使用。只要在Morse文件夹内创建examples目录,然后把刚才写的程序(命名为SOS程序)文件保存到该目录即可。你可以通过Sketch > ShowSketch Folder菜单快速找到对应库函数的目录。重启Arduino IDE后(我保证这是最后一次重启),将会在File > Sketchbook > Examples菜单里找到Library-Mourse例子。最好再加一些注释来说明如何使用你编写的函数库。
此处可下载完成的例子函数库:Morse.zip.
这就是当前需要做的所有事情,不过稍后也许我会写一个更高级的函数库创建指南。同时,若你有任何问题或建议,请发往Software Development forum.

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

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

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