-
Notifications
You must be signed in to change notification settings - Fork 1
/
DFRobot_AGS01DB.h
91 lines (79 loc) · 2.64 KB
/
DFRobot_AGS01DB.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*!
* @file DFRobot_AGS01DB.h
* @brief 定义DFRobot_AGS01DB 类的基础结构
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli]([email protected])
* @version V1.0
* @date 2019-07-13
* @get from https://www.dfrobot.com
* @https://github.com/DFRobot/DFRobot_AGS01DB
*/
#ifndef DFROBOT_AGS01DB_H
#define DFROBOT_AGS01DB_H
#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include <Wire.h>
//#define ENABLE_DBG
#ifdef ENABLE_DBG
#define DBG(...) {Serial.print("["); Serial.print(__FUNCTION__); Serial.print("(): "); Serial.print(__LINE__); Serial.print(" ] "); Serial.println(__VA_ARGS__);}
#else
#define DBG(...)
#endif
#define AGS01DB_IIC_ADDR (0x11) /*传感器设备的地址*/
//#define ERR_OK 0 //无错误
//#define ERR_DATA_BUS -1 //数据总线错误
//#define ERR_IC_VERSION -2 //芯片版本不匹配
class DFRobot_AGS01DB
{
public:
#define CMD_DATA_COLLECTION_HIGH 0x00 /*获取voc的命令的高位*/
#define CMD_DATA_COLLECTION_LOW 0x02 /*获取voc的命令的低位*/
#define CMD_GET_VERSION_HIGH 0x0A /*获取版本号的命令的高位*/
#define CMD_GET_VERSION_LOW 0x01 /*获取版本号的命令的低位*/
/*!
* @brief 构造函数.
*/
DFRobot_AGS01DB(TwoWire * pWire = &Wire);
/**
* @brief 初始化函数
* @return 返回0表示初始化成功,返回其他值表示初始化失败,返回错误码
*/
int begin(void);
/**
* @brief 读取空气中有害气体的浓度.
* @return 返回读取到的VOC浓度值,单位是ppm.
*/
float readVocPPM();
/**
* @brief 读取芯片的版本号.
* @return 返回读取到的版本号,如0x0B.
*/
int readSensorVersion();
private:
/**
* @brief 检测返回的CRC,是否与数据位的两个数据校验出的CRC8相等.
* @param data 数据位的数据.
* @param Num 需要检验数据的个数.
* @return 返回0表示验证正确,返回其他值表示验证为错误.
*/
bool checkCRC8(uint8_t *data, uint8_t Num);
/**
* @brief 向传感器芯片写指令.
* @param pBuf 指令中包含的数据.
* @param size 指令数据的个数.
*/
void writeCommand(const void *pBuf,size_t size);
/**
* @brief 向传感器芯片写指令.
* @param pBuf 指令中包含的数据.
* @param size 指令数据的个数.
* @return 返回0表示读取完成,返回其他值表示未能正确读取.
*/
uint8_t readData(void *pBuf,size_t size);
TwoWire *_pWire;
};
#endif