23.多文件系统及全局变量

之前的工程, 我们一直把所有的代码写在一个文件里, 写在我们来将它们分开
以一个读取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();
}
#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()
{
}

————————————————
链接:https://blog.csdn.net/finedayforu/article/details/108661555

 


评论:
相关文章
ESP32 的中断机制和处理

本文介绍ESP32中的中断机制,以及如何通过GPIO中断实现按钮控制。重点讲解了如何设置中断服务例程、处理中断抖动问题,并提供了消除中断抖动的示例代码。


在ESP32上实现WEB交互界面

本文主要介绍在未联网(AP热点)情况下实现WEB交互界面的CSS和javascript库。


Arduino ESP32获取芯片、RAM信息

本文介绍如何使用Arduino-ESP32库中的API函数获取ESP32的芯片、RAM信息等,并提供了一个示例程序代码。


ESP32 FreeRTOS 双核使用

ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。


ESP32 GPIO 矩阵和引脚多路复用

ESP32 芯片有34个物理GPIO管脚。每个GPIO管脚都可用作一个通用IO,或连接一个内部的外设信号。IO_MUX ¹、RTC IO MUX 和GPIO交换矩阵用于将信号从外设传输至GPIO管脚。

玩转 ESP32 + Arduino

作者:finedayforu@CSDN   共24讲

玩转 ESP32 + Arduino