玩转 ESP32 + Arduino (二十三) 多文件系统及全局变量

之前的工程, 我们一直把所有的代码写在一个文件里, 写在我们来将它们分开

以一个读取sht20的温湿度数据并在串口上打印为例:

我们的规划是这样的

  • 设置一个 config.h文件, 所有的硬件定义, 公共变量 ,都放在这里面,(也可以分多个.h ,然后集中引用过来)
  • main.ino 文件包含入口函数 setup()
  • 具体的函数文件写具体的功能, 文件格式 .ino(不用.cpp)
  • 如果有全局变量, 在config.h中声明, 在具体的.ino中 extern

例子:

config.h (总配置头文件)
#if !defined(CONFIG_H)
#define CONFIG_H

#include "Arduino.h"
#include "Wire.h"
#include "uFire_SHT20.h"

uFire_SHT20 sht20;

float currentTemp;
float currentHumi;


void hardware_init();
void sht20getTempAndHumi();
#endif // CONFIG_H

hardware_init.ino //硬件初始化相关
#include "config.h"

void hardware_init()
{
  Wire.begin();
  Serial.begin(115200);
  sht20.begin();
}
al_sht20.ino //sht20操作相关
#include "config.h"
extern float currentTemp;
extern float currentHumi;
void sht20getTempAndHumi()
{
  float _currentTemp = sht20.temperature();
  float _currentHumi = sht20.humidity();

  if(_currentTemp<100)
  {
    currentTemp = _currentTemp;
    currentHumi = _currentHumi;
  }
}
最后: main.ino
#include "config.h"

void setup()
{
  delay(2000); //这句是为了让我手动打开串口助手😂
  hardware_init();
  sht20getTempAndHumi();
  Serial.println(currentTemp);
  Serial.println(currentHumi);
}

void loop()
{
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。