玩转 ESP32 + Arduino (二十三) 多文件系统及全
2020-09-18 本文已影响0人
熊爸天下_56c7
之前的工程, 我们一直把所有的代码写在一个文件里, 写在我们来将它们分开
以一个读取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()
{
}