Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将MQ4气体传感器粒子光子代码分离为.h和.cpp文件_C++_Arduino_Particles_Particle Photon - Fatal编程技术网

C++ 将MQ4气体传感器粒子光子代码分离为.h和.cpp文件

C++ 将MQ4气体传感器粒子光子代码分离为.h和.cpp文件,c++,arduino,particles,particle-photon,C++,Arduino,Particles,Particle Photon,我是新来的。我正在使用粒子光子和MQ4 I2C气体传感器。 我有这个传感器的正常I2C代码 #include <application.h> #include <spark_wiring_i2c.h> // ADC121C_MQ4 I2C address is 0x50(80) #define Addr 0x50 int raw_adc = 0; double ppm = 0.0; void setup() { // Set variable

我是新来的。我正在使用粒子光子和MQ4 I2C气体传感器。 我有这个传感器的正常I2C代码

#include <application.h>
#include <spark_wiring_i2c.h>

 // ADC121C_MQ4 I2C address is 0x50(80)
  #define Addr 0x50

  int raw_adc = 0;
  double ppm = 0.0;
  void setup()
  {
  // Set variable
  Particle.variable("i2cdevice", "ADC121C_MQ4");
  Particle.variable("PPM", ppm);

  // Initialise I2C communication as MASTER
  Wire.begin();
 // Initialise serial communication, set baud rate = 9600
    Serial.begin(9600);
    delay(300);
  }

void loop()
{
  unsigned int data[2];

  // Start I2C transmission
   Wire.beginTransmission(Addr);
 // Select data register
   Wire.write(0x00);
 // Stop I2C transmission
    Wire.endTransmission();

  // Request 2 bytes of data
   Wire.requestFrom(Addr, 2);

  // Read 2 bytes of data
  // raw_adc msb, raw_adc lsb
  if (Wire.available() == 2)
   {
    data[0] = Wire.read();
    data[1] = Wire.read();
  }
   delay(300);

  // Convert the data to 12-bits
   raw_adc = ((data[0] & 0x0F) * 256) + data[1];
   ppm = (10000 / 4096.0) * raw_adc + 200.0;

  // Output data to dashboard
   Particle.publish("Methane concentration : ", String(ppm));
   delay(1000);
  }
#包括
#包括
//ADC121C_MQ4 I2C地址为0x50(80)
#定义地址0x50
int raw_adc=0;
双倍ppm=0.0;
无效设置()
{
//设置变量
粒子变量(“i2cdevice”、“ADC121C_MQ4”);
颗粒变量(“PPM”,PPM);
//将I2C通信初始化为主机
Wire.begin();
//初始化串行通信,设置波特率=9600
Serial.begin(9600);
延迟(300);
}
void循环()
{
无符号整数数据[2];
//启动I2C传输
导线起始传输(Addr);
//选择数据寄存器
连线写入(0x00);
//停止I2C传输
导线端传动();
//请求2字节的数据
电汇请求来源(地址,2);
//读取2字节的数据
//原始adc msb,原始adc lsb
if(Wire.available()==2)
{
数据[0]=Wire.read();
数据[1]=Wire.read();
}
延迟(300);
//将数据转换为12位
原始adc=(数据[0]&0x0F)*256)+数据[1];
ppm=(10000/4096.0)*原始adc+200.0;
//将数据输出到仪表板
发布(“甲烷浓度:”,字符串(ppm));
延迟(1000);
}
因此,我是一个编码高手,不知道如何将此代码分割成.cpp和.h文件以获得干净的代码

请帮助我,如何将此代码转换为.cpp和.h文件


Thanx。头文件通常应包含多个源文件所需的符号常量(或预处理器宏)、结构定义和函数声明(而不是定义、实现)。如果您没有多个源文件,或者它们之间没有需要共享的内容,那么您就不需要头文件(而且添加头文件可能会使代码更难阅读、理解和维护)。至于您当前显示的代码,它已经非常干净了。它可以使用一些一致的缩进,但在其他方面还可以。您认为转换后的代码是在哪种环境下进行的?仍然在arduino中?是的,它确实是一个干净的代码,但我想学习如何在CPP和h文件中转换它这里是arduino相同代码的link()