Ai
1 Star 0 Fork 0

DFRobot/DFRobot_AirQualitySensor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
DFRobot_AirQualitySensor.cpp 2.14 KB
一键复制 编辑 原始数据 按行查看 历史
Arya11111 提交于 2022-01-19 11:29 +08:00 . V1.0.0
/*!
* @file DFRobot_AirQualitySensor.cpp
* @brief The sensor can obtain concentration of some PM in the air.
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author PengKaixing(kaixing.peng@dfrobot.com)
* @version V1.0.0
* @date 2020-11-23
* @url https://github.com/dfrobot/DFRobot_AirQualitySensor
*/
#include "DFRobot_AirQualitySensor.h"
DFRobot_AirQualitySensor::DFRobot_AirQualitySensor(TwoWire *pWire, uint8_t addr)
{
_pWire = pWire;
this->_I2C_addr = addr;
}
bool DFRobot_AirQualitySensor::begin(void)
{
_pWire->begin();
_pWire->beginTransmission(_I2C_addr);
if (_pWire->endTransmission() == 0)
return true;
else
return false;
}
uint16_t DFRobot_AirQualitySensor::gainParticleConcentration_ugm3(uint8_t type)
{
uint8_t buf[2];
readReg(type, buf, 2);
uint16_t concentration = ((uint16_t)buf[0] << 8) + (uint16_t)buf[1];
return concentration;
}
uint16_t DFRobot_AirQualitySensor::gainParticleNum_Every0_1L(uint8_t type)
{
uint8_t buf[2];
readReg(type, buf, 2);
uint16_t particlenum = ((uint16_t)buf[0] << 8) + (uint16_t)buf[1];
return particlenum;
}
uint8_t DFRobot_AirQualitySensor::gainVersion(void)
{
uint8_t version = 0 ;
readReg(PARTICLENUM_GAIN_VERSION, &version, 1);
return version;
}
void DFRobot_AirQualitySensor::setLowpower(void)
{
uint8_t mode = 1;
writeReg(0x01, &mode, 1);
}
void DFRobot_AirQualitySensor::awake(void)
{
uint8_t mode = 2;
writeReg(0x01, &mode, 1);
}
void DFRobot_AirQualitySensor::writeReg(uint8_t Reg, void *pData, uint8_t len)
{
uint8_t *Data = (uint8_t *)pData;
_pWire->beginTransmission(this->_I2C_addr);
_pWire->write(Reg);
for (uint8_t i = 0; i < len; i++)
{
_pWire->write(Data[i]);
}
_pWire->endTransmission();
}
int16_t DFRobot_AirQualitySensor::readReg(uint8_t Reg, uint8_t *Data, uint8_t len)
{
int i = 0;
_pWire->beginTransmission(this->_I2C_addr);
_pWire->write(Reg);
if (_pWire->endTransmission() != 0)
{
return -1;
}
_pWire->requestFrom((uint8_t)this->_I2C_addr, (uint8_t)len);
while (_pWire->available())
{
Data[i++] = _pWire->read();
}
return len;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/dfrobot/DFRobot_AirQualitySensor.git
git@gitee.com:dfrobot/DFRobot_AirQualitySensor.git
dfrobot
DFRobot_AirQualitySensor
DFRobot_AirQualitySensor
master

搜索帮助