文章目录:
一、库文件的下载及导入
二、库文件源代码说明
三、库文件应用举例
一、库文件的下载及导入
有关arduino开源库的导入有两种方案:
1.第一种方案需要借助arduino.cc网站来进行查询下载,然后在Arduino软件中进行导入。
2.第二种方案则只需要使用较新版本的Arduino软件(2.2版本之后),在软件中可以直接搜索并导入开源库。
1.在Arduino.cc进行导入库
首先在网页地址框直接输入arduino.cc便可进入网站:
然后点击上方【DOCUMENTATION】选项:
在此页面点击左侧【Libraries】选项,便可进入官方收录的库文件页面:
选择要用的库文件的类目,这里以【display】为例:
然后点击具体的库文件,以【LiquidCrystal】为例:
进入库文件下载目录后,直接点击要用的版本号即可直接下载。
下载完成后如果不是压缩包,最好压缩成zip文件:
最后打开Arduino软件,选择【项目】-【导入库】-【添加.ZIP库】然后选择对应的zip文件即可导入成功。
2.使用Arduino软件导入库
上述方案较为复杂,所以建议使用较新版本的Arduino软件直接导入库:
在此版本的软件中直接点选左侧的“书籍”样式的图标(其表示为库文件),然后直接在搜索框查找要使用的库文件名,选择对应库文件及版本点击安装即可。
这种方案则最为简洁,当然有些时候要使用的库在软件中查询不到,此时就需要采用第一种方案进行导入。
2、库文件源代码说明
如上图所示,一般库文件中会有如上几个文件(会存在些许不同)。
1.示例程序的使用
example文件即为【示例】,这里面会有开源文件贡献者编写的几个示例程序,用于帮助学习者理解库的使用:
当然只要将库文件导入过Arduino中,也可以在Arduino软件中打开相应的示例程序:
2.【.h文件】及【.cpp】文件说明
在【src】文件夹中存在以下两个文件:
【.h】后缀我们称之为头文件,【.cpp】后缀我们称之为源文件
头文件通常包含类声明、函数原型、宏定义和全局变量声明等。它们的目的是提供一种方式来共享代码,并确保在多个源文件中使用一致的声明:
/*
HCSR04 - Library for arduino, for HC-SR04 ultrasonic distance sensor.
Created by Dirk Sarodnick, 2020.
*/
#ifndef HCSR04_H
#define HCSR04_H
#include "Arduino.h"
#define HCSR04_INVALID_RESULT -1;
#define HCSR04_NO_TRIGGER -2;
#define HCSR04_NO_ECHO -3;
class HCSR04Sensor {
public:
HCSR04Sensor();
~HCSR04Sensor();
typedef enum eUltraSonicUnlock {
unlockSkip = 0,
unlockMaybe = 1,
unlockForced = 2
} eUltraSonicUnlock_t;
void begin(uint8_t triggerPin, uint8_t echoPin) {
begin(triggerPin, new uint8_t[1]{
echoPin }, 1); }
void begin(uint8_t triggerPin, uint8_t* echoPins, uint8_t echoCount) {
begin(triggerPin, echoPins, echoCount, 100000, eUltraSonicUnlock_t::unlockSkip); }
void begin(uint8_t triggerPin, uint8_t echoPin, uint32_t timeout, eUltraSonicUnlock_t unlock) {
begin(triggerPin, new uint8_t[1]{
echoPin }, 1, timeout, unlock); }
void begin(uint8_t triggerPin, uint8_t* echoPins, uint8_t echoCount, uint32_t timeout, eUltraSonicUnlock_t unlock) {
begin(triggerPin, echoPins, echoCount, timeout, 10, 10, unlock); }
void begin(uint8_t triggerPin, uint8_t* echoPins, uint8_t echoCount, uint32_t timeout, uint16_t triggerTime, uint16_t triggerWait, eUltraSonicUnlock_t unlock);
void end();
long* measureMicroseconds() {
measureMicroseconds(lastMicroseconds); return lastMicroseconds; }
void measureMicroseconds(long* results);
double* measureDistanceMm() {
measureDistanceMm(defaultTemperature, lastDistances); return lastDistances; }
void measureDistanceMm(double* results) {
measureDistanceMm(defaultTemperature, results == NULL ? lastDistances : results); }
double* measureDistanceMm(float temperature) {
measureDistanceMm(temperature, lastDistances); return lastDistances; }
void measureDistanceMm(float temperature, double* results);
double* measureDistanceCm() {
measureDistanceCm(defaultTemperature, lastDistances); return lastDistances; }
void measureDistanceCm(double* results) {
measureDistanceCm(defaultTemperature, results == NULL ? lastDistances : results); }
double* measureDistanceCm(float temperature) {
measureDistanceCm(temperature, lastDistances); return lastDistances; }
void measureDistanceCm(float temperature, double* results);
double* measureDistanceIn() {
measureDistanceIn(defaultTemperature, lastDistances); return lastDistances; }
void measureDistanceIn(double* results) {
measureDistanceIn(defaultTemperature, results == NULL ? lastDistances : results); }
double* measureDistanceIn(float temperature) {
measureDistanceIn(temperature, lastDistances); return lastDistances; }
void measureDistanceIn(float temperature, double* results);
static void triggerInterrupt0(void);
static void triggerInterrupt1(void);
static void triggerInterrupt2(void);
static void triggerInterrupt3(void);
static void triggerInterrupt4(void);
static void triggerInterrupt5(void);
static void triggerInterrupt6(void);
static void triggerInterrupt7(void);
static void triggerInterrupt8(void);
static void triggerInterrupt9(void);
static void echoInterrupt0(void);
static void echoInterrupt1(void);
static void echoInterrupt2(void);
static void echoInterrupt3(void);
static void echoInterrupt4(void