库管理器可以很方便的添加第三方库,但其中只提供了一些常用的库资源,如果需要添加更多的库资源或者自定义的库,那就需要用户自己准备找到或编写库。大部分开发者都喜欢将他们编写的Arduino库放到开源社区上分享。

Github 是全球最大git服务提供商,也是最大的开源社区之一,很多常用的Arduino库,都可以通过Github找到。Arduino官方网站 和 Arduino中文社区 上也可以找到很多库资源。

还是以SR04超声波传感器模块为例,你可以在以下网址下载到这个类库:http://clz.me/101-book/lib/sr04/

在该页面可以看到SR04 lib的下载链接,下载后,你会得到一个名为SR04.zip的文件。

arduino IDE >= 1.8.0:

解压该文件,并将解压出的SR04文件夹放到 我的文档/Arduino/libraries中,如 C:\Users\奈何col\Documents\Arduino\libraries

arduino IDE < 1.8.0

解压该文件,并将解压出的SR04文件夹放到Arduino IDE的所在文件夹中的libraries文件夹内,如D:\Program\arduino-1.6.11\libraries(如图4-1)。

图4-1 Arduino第三方库存放文件夹.png (73.93 KB, 下载次数: 139)

2016-12-13 15:28 上传

图4-1 Arduino第三方库存放文件夹

libraries文件夹中存放的是Arduino的各种类库,当将类库放入其中后,便可以在编写程序时调用它们。

再打开Arduino IDE,你可以在 Arduino IDE菜单>文件>示例 中看到新增加的SR04选项,点击即可打开SR04类库的示例程序(如图4-2)。

图4-2 打开超声波示例程序.png (309.78 KB, 下载次数: 92)

2016-12-13 15:32 上传

图4-2 打开超声波示例程序

通过阅读类库的示例程序,你能更快了解该类库的使用方法。

SR04_Example内容如下:

[mw_shl_code=cpp,true]//声明该程序要使用SR04类库

#include "SR04.h"

//实例化一个对象,并初始化连接的引脚

//TrigPin连接到2号引脚

//EchoPin连接到3号引脚

SR04 ultrasonic = SR04(2,3);

void setup()

{

Serial.begin(9600);

}

void loop()

{

//使用GetDistance()函数获取当前超声波传感器返回的距离值

//并存入变量distance中

float distance=ultrasonic.GetDistance();

//输出测得的距离

Serial.print(distance);

Serial.print("cm");

Serial.println();

}[/mw_shl_code]

编译并下载程序到你的Genuino 101中,你将获得与之前超声波测距程序一样的效果。

我们再来看看这个示例程序是如何调用这个类库的。

首先程序中使用了

[mw_shl_code=cpp,true]

#include "SR04.h"[/mw_shl_code]

语句,声明该程序会调用SR04类库。接着,使用

[mw_shl_code=cpp,true]

SR04 ultrasonic = SR04(2,3);[/mw_shl_code]

建立了一个SR04类型,名为ultrasonic的对象,你也可以其他名字命名这个对象。

该对象代表了我们正在使用的这个超声波传感器。并且,这里调用SR04类的构造函数对我们新建的这个对象进行了初始化,指定了该传感器连接的Genuino 101的引脚。

需要注意的是这里的类型、对象、构造函数的区别,如图4-3所示

图4-3.png (4.71 KB, 下载次数: 70)

图4-3 区分类型、对象、构造函数

2016-12-13 11:41 上传

图4-3 区分类型、对象、构造函数

接着,在loop函数中,我们还使用了如下语句:

[mw_shl_code=cpp,true]

float distance = ultrasonic.GetDistance();[/mw_shl_code]

GetDistance() 是SR04类中的成员函数,它可以返回当前传感器测得的距离。而ultrasonic.GetDistance(),即是返回sr04这个对象测得的距离。该返回值为float类型,因此,我们还声明了一个float类型的变量,来存储这个返回值,并在此后的程序中使用。

由上可看出,使用类库编写程序,你需要编写的代码减少了,程序的可读性提高了,编程工作更加直观和方便。

一些常见的单片机开发,都使用的是纯C语言,并没有使用面向对象的思想,而Arduino引入面向对象的思想,无疑是程序更加容易理解和编写。我们可以将Arduino上连接的硬件设备都看作是一个对象,对其进行编程操作。

例如,同时操作两个SR04超声波传感器时,你只需要先建立两个SR04类型的对象,并分别调用对象的成员函数即可。

示例程序代码如下:

[mw_shl_code=cpp,true]

#include "SR04.h"

// 实例化两个SR04对象,并初始化连接的引脚

SR04 ultrasonic1 = SR04( 2, 3);

SR04 ultrasonic2 = SR04( 4, 5);

void setup()

{

Serial.begin(9600);

}

void loop()

{

// 分别调用GetDistance () 函数获取当前超声波传感器返回的距离值

// 并存入变量distance中

float distance1 = ultrasonic1.GetDistance ();

float distance2 = ultrasonic2.GetDistance ();

// 分别输出两个超声波传感器测得的距离

Serial.print(distance1);

Serial.print("cm");

Serial.print(distance2);

Serial.print("cm");

Serial.println();

}[/mw_shl_code]通过以上程序,你便可以同时使用两个超声波传感器了。

Arduino还有很多第三方的类库可以使用,你可以在Github.com、Arduino.cc、Arduino.cn等开源社区上找到更多的类库。Arduino的优势也在于此,借助开源社区的资源,即使你不清楚某个器件的驱动原理,如果该器件有第三方的Arduino类库,通过学习例程,你便可以对这个器件加以使用。

此后的章节中我们还会用到其他第三方类库,其安装方法均和本节所讲的方法一致。

下一篇:Arduino教程——编写Arduino类库(1) http://www.arduino.cn/thread-31721-1-1.html

Arduino教程——使用和编写类库   http://www.arduino.cn/thread-22293-1-1.html

Arduino教程——通过 库管理器 添加库 http://www.arduino.cn/thread-31719-1-1.html

Arduino教程——手动添加库并使用 http://www.arduino.cn/thread-31720-1-1.html

Arduino教程——编写Arduino类库(1) http://www.arduino.cn/thread-31721-1-1.html

Arduino教程——编写Arduino类库(2) http://www.arduino.cn/thread-31722-1-1.html

Arduino教程——编写Arduino类库(3) http://www.arduino.cn/thread-31723-1-1.html

arduino编乐谱_Arduino教程——手动添加库并使用相关推荐

  1. arduino编乐谱_Arduino 蜂鸣器播放音乐简谱

    代码: #define musicpin 5 //喇叭引脚 int song[] = { //音乐音频 392, 392, 440, 392, 523, 493, 392, 392, 440, 392 ...

  2. arduino编乐谱_把乐谱播出来,自制简谱播放库

    关注我们微信的童鞋可能还记得,昨天我发了一章关于UNO+喇叭就可以播放歌曲的文章. 文章到最后也没有完成整个天空之城歌曲.因为实在是太麻烦了..于是今天就苦思冥想,想借此机会整理出一个简谱的播放程序. ...

  3. arduino编乐谱_基于Arduino的电子音乐发声器设计

    作者 赵云娥1 吴振强2 1.青海建筑职业技术学院(青海 西宁 810012) 2.陕西师范大学计算机科学学院(陕西 西安 710119)本文引用地址:http://www.eepw.com.cn/a ...

  4. arduino编乐谱_【Arduino】用Arduino编首小曲子吧

    本次我们需要用的材料不多,一块UNO板,一块扩展板,一个喇叭模块再加一张乐谱.主要的核心内容是我们用arduino来编写音乐的部分. 编写音乐,首先我们一定要知道其中的乐理知识,知道音乐是怎样编排的, ...

  5. arduino 按钮读取_arduino教程系列6-按键实验 arduino入门,arduino教程

    按键是一种常用的控制电器元件,常用来接通或断开电路,从而达到控制电机或者其他设备运行的开关.按键的外观多种多样,本次实验使用的是这种微型按键,6mm的,如下图. 2011-7-21 20:11 上传 ...

  6. arduino灯光装置_Arduino教程中级 项目一 点亮一盏灯

    项目一 点亮一盏灯 在前面几篇前奏中,我们已经对Arduino有了简单的了解,整个装置工作是依赖于哪些部分.也了解了电子世界最重要两个量,数字量与模拟量.接下来我们就正式开始做东西了,第一个要做的必须 ...

  7. arduino花盆含水量_Arduino教程┃模拟土壤湿度传感器的介绍

    它是一个模拟输入模块,可以实现土壤湿度的检测,有DO.AO两种模式.注意不同土壤介质的测量值会存在差异,土壤中的水分存在分布不均匀的情况,数据仅能代表局部湿度.点击下面的链接观看视频了解详细情况. A ...

  8. 为Arduino IDE安装添加库

    什么是库? 通俗的说,库就是一系列程序文件的组合.因为有了库,我们可以很轻松的实现Arduino与外部硬件的协作或进行数据通讯.举例说,通过Arduino内置标准库中的Servo库,您只需要简单的几行 ...

  9. maven 加入第三方库_maven 手动添加第三方的jar包

    maven项目手动引入第三方jar包项目打包 项目有时候需要依赖第三方jar包,一般会去maven仓库寻找坐标,但有时候maven仓库并没有提供,我们需要手动下载jar包并导入项目. maven库中并 ...

最新文章

  1. 探索自动驾驶领域中的3D多目标跟踪(ICCV 2021)
  2. java基本类型是类吗_Java基本数据类型和引用类型(一)
  3. 读书感想--list/BSS等等
  4. 北方股份无人驾驶矿卡_踏歌智行完成B轮2亿元融资,无人驾驶矿山赛道爆发在即...
  5. Hollis要转行了?
  6. (转)使用CGLIB实现AOP功能与AOP概念解释
  7. 深度学习入门有多难?这篇带你零基础入行
  8. 配置Apache支持
  9. 《数字图像处理 第三版》(冈萨雷斯)——第四章 频率域处理
  10. atomic 内存序_C++11的原子量与内存序浅析
  11. 2022(一等奖)B360基于Arcpy与SVM的滑坡易发性评价
  12. Aquatone -- 子域名探测
  13. PTA习题【python】 6-8 jmu-python-发牌
  14. Coding life,云栖社区的个性化首页上线
  15. python自定义函数求方差_计算高斯函数的标准差
  16. TeX系列: dot2tex 和 dot2texi 配置步骤
  17. “最难就业季“中的大学生就业:本硕过半有着落 高职生成香饽饽
  18. 反向迭代器和正向迭代器
  19. input autocomplete用法
  20. 科普文章-另一个视角解读计算机编码(修订版)【一个吊丝的个人理解】

热门文章

  1. JS数组对象,过滤掉不要的对象
  2. Linux平台Wiznet w5500移植
  3. java 找茬_求大神帮忙找茬,就是改不过来错误
  4. linux之文件内容显示
  5. NATAPP - 连不上 / 错误信息等问题解决汇总
  6. UOJ 179 线性规划
  7. kretprobes
  8. wood计算机二级考试,全国计算机等级考试一级MSOFFICE上机考试指导(二)
  9. ABAP 标准状态栏GUI STATUS的快速创建
  10. 计算机系统的虚拟存储器,其最大容量和实际容量分别取决于哪些因素