拆分arduino文件的最佳方法
Best way to split arduino files
我正在寻找拆分 arduino 文件的最佳方法,我粘贴在它下面的代码只是为了编译测试,只是为了了解它是如何工作的。在这个例子中,我尝试拆分我的 MQTT 代码。
这是环境:
main.ino 文件:
#include "file.h"
//and more libraries
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
setup_mqtt(); //declared in file.h
}
// a lot of code here
void loop() {
// put your main code here, to run repeatedly:
if (!client.connected()) {
reconnect(); //declared in file.h
mqtt_mensaje(); //declared in file.h
}
}
file.h 文件:
void setup_mqtt();
void callback(char* topic, byte* payload, unsigned int length);
void reconnect();
void mqtt_mensaje();
file.cpp 文件
#include <Arduino.h>
#include <WiFiClient.h>
#include <PubSubClient.h>
#define LED_BUILTIN 4
const char* mqtt_server = "192.168.1.18";
// Connectión WiFi + Broker
WiFiClient espClient;
PubSubClient client(espClient);
// Function MQTT ------------------------
void reconnect() {
//code
}
void callback(char* topic, byte* payload, unsigned int length) {
//code
reconnect();
}
void mqtt_mensaje() {
//code PUB message
}
//End Functions MQTT-----------------------
void setup_mqtt(){
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
// Configuración MQTT
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
当我 运行 我的 Arduino IDE 中的这段代码时,我得到:
/Users/charlysan/Projects/works/arduino/main/main.ino: 在函数 'void loop()' 中:
main:9:10: 错误: 'client' 未在此范围内声明
如果(!client.connected()){
^
任何帮助将不胜感激
没有拆分 C++ 代码的最佳方法。对此的回答总是自以为是。
关于您的错误消息添加
#include <PubSubClient.h>
extern PubSubClient client;
要消除该错误消息,您可以将其声明为 extern,以便编译器知道它在其他地方实例化。
添加
#include <PubSubClient.h>
extern PubSubClient client;
到您的 .ino。
不过,我个人看不出为什么要在另一个文件中实例化它。
我正在寻找拆分 arduino 文件的最佳方法,我粘贴在它下面的代码只是为了编译测试,只是为了了解它是如何工作的。在这个例子中,我尝试拆分我的 MQTT 代码。
这是环境:
main.ino 文件:
#include "file.h"
//and more libraries
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
setup_mqtt(); //declared in file.h
}
// a lot of code here
void loop() {
// put your main code here, to run repeatedly:
if (!client.connected()) {
reconnect(); //declared in file.h
mqtt_mensaje(); //declared in file.h
}
}
file.h 文件:
void setup_mqtt();
void callback(char* topic, byte* payload, unsigned int length);
void reconnect();
void mqtt_mensaje();
file.cpp 文件
#include <Arduino.h>
#include <WiFiClient.h>
#include <PubSubClient.h>
#define LED_BUILTIN 4
const char* mqtt_server = "192.168.1.18";
// Connectión WiFi + Broker
WiFiClient espClient;
PubSubClient client(espClient);
// Function MQTT ------------------------
void reconnect() {
//code
}
void callback(char* topic, byte* payload, unsigned int length) {
//code
reconnect();
}
void mqtt_mensaje() {
//code PUB message
}
//End Functions MQTT-----------------------
void setup_mqtt(){
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
// Configuración MQTT
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
当我 运行 我的 Arduino IDE 中的这段代码时,我得到:
/Users/charlysan/Projects/works/arduino/main/main.ino: 在函数 'void loop()' 中: main:9:10: 错误: 'client' 未在此范围内声明 如果(!client.connected()){ ^
任何帮助将不胜感激
没有拆分 C++ 代码的最佳方法。对此的回答总是自以为是。
关于您的错误消息添加
#include <PubSubClient.h>
extern PubSubClient client;
要消除该错误消息,您可以将其声明为 extern,以便编译器知道它在其他地方实例化。 添加
#include <PubSubClient.h>
extern PubSubClient client;
到您的 .ino。
不过,我个人看不出为什么要在另一个文件中实例化它。