查看: 28734|回复: 6

Arduino教程——手动添加库并使用

[复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2016-12-7 23:48 | 显示全部楼层 |阅读模式

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

    库管理器可以很方便的添加第三方库,但其中只提供了一些常用的库资源,如果需要添加更多的库资源或者自定义的库,那就需要用户自己准备找到或编写库。大部分开发者都喜欢将他们编写的Arduino库放到开源社区上分享。
    Github 是全球最大git服务提供商,也是最大的开源社区之一,很多常用的Arduino库,都可以通过Github找到。Arduino官方网站Arduino中文社区 上也可以找到很多库资源。

    还是以SR04超声波传感器模块为例,你可以在以下网址下载到这个类库:http://clz.me/101-book/lib/sr04/
    在该页面可以看到SR04 lib的下载链接,下载后,你会得到一个名为SR04.zip的文件。解压该文件,并将解压出的SR04文件夹放到Arduino IDE的所在文件夹中的libraries文件夹内,如D:\Program\arduino-1.6.11\libraries(如图4-1)。
    图4-1 Arduino第三方库存放文件夹.png
    图4-1 Arduino第三方库存放文件夹
    libraries文件夹中存放的是Arduino的各种类库,当将类库放入其中后,便可以在编写程序时调用它们。

    再打开Arduino IDE,你可以在 Arduino IDE菜单>文件>示例 中看到新增加的SR04选项,点击即可打开SR04类库的示例程序(如图4-2)。
    图4-2 打开超声波示例程序.png
    图4-2 打开超声波示例程序
    通过阅读类库的示例程序,你能更快了解该类库的使用方法。

    SR04_Example内容如下:

    kittenblock中小学创客名师推荐的图形化编程软件

    //声明该程序要使用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();
    }
    编译并下载程序到你的Genuino 101中,你将获得与之前超声波测距程序一样的效果。

    我们再来看看这个示例程序是如何调用这个类库的。
    首先程序中使用了
    语句,声明该程序会调用SR04类库。接着,使用
    建立了一个SR04类型,名为ultrasonic的对象,你也可以其他名字命名这个对象。
    该对象代表了我们正在使用的这个超声波传感器。并且,这里调用SR04类的构造函数对我们新建的这个对象进行了初始化,指定了该传感器连接的Genuino 101的引脚。
            需要注意的是这里的类型、对象、构造函数的区别,如图4-3所示

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

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


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

    kittenblock中小学创客名师推荐的图形化编程软件

    
    float distance = ultrasonic.GetDistance();
    GetDistance() 是SR04类中的成员函数,它可以返回当前传感器测得的距离。而ultrasonic.GetDistance(),即是返回sr04这个对象测得的距离。该返回值为float类型,因此,我们还声明了一个float类型的变量,来存储这个返回值,并在此后的程序中使用。
    由上可看出,使用类库编写程序,你需要编写的代码减少了,程序的可读性提高了,编程工作更加直观和方便。


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

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

    kittenblock中小学创客名师推荐的图形化编程软件

    
    #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();
    }
    通过以上程序,你便可以同时使用两个超声波传感器了。


    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
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    慵懒
    2019-1-17 10:38
  • 签到天数: 688 天

    [LV.9]以坛为家II

    发表于 2016-12-8 08:33 | 显示全部楼层
    關注中,謝謝老師
    打赏作者鼓励一下!
  • TA的每日心情
    擦汗
    2017-8-16 16:44
  • 签到天数: 229 天

    [LV.7]常住居民III

    发表于 2016-12-8 10:15 | 显示全部楼层
    关注                  
  • TA的每日心情
    开心
    2014-12-26 13:23
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2016-12-9 19:51 | 显示全部楼层
    希望尽快编辑
  • TA的每日心情
    奋斗
    2018-8-25 22:29
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2017-1-6 20:48 | 显示全部楼层
    很好,有帮助

    该用户从未签到

    发表于 2018-11-4 11:22 | 显示全部楼层
    想请问一下,添加了头文件后我要怎么查看头文件中有哪些可调用的函数?谢谢!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    GRBL sender 自己制作的控制软件
    GRBL sender 自己制作的控
    网上找了许多GRBL控制软件都不理想,于是决定自己动手做一个,这是第一版,功能有限,
    有关程序编译出错问题
    有关程序编译出错问题
    ActionGroup_[AG_NUM_][CHAR_NUM]二维数组传入void handleActionGroup(const char
    基于arduino的ZS-40蓝牙模块传输超声波距离,app显示
    基于arduino的ZS-40蓝牙模
    基于arduino的ZS-40蓝牙模块传输超声波距离,app显示
    上传出错
    上传出错
    自从我做红外遥控小车之后就上传出错了,换了一根线也不行,单片机没有插任何东西
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表