Iniciar una clase dentro SETUP() pero que pueda ser accesible desde todo el programa

Hola,

Necesito iniciar una clase con los parámetros almacenados en al EEPROM.

El problema esta en que la clase la inicializo fuera del SETUP().

Si inicializo la clase después de leer la EEPROM, no tengo acceso a la clase fuera del SETUP().

¿Hay alguna forma de conseguir tener acceso a la clase inicializada en el SETUP89 fuera de este o puedo declararla fuera y iniciarla dentro?

Este seria un programa de lo que quiero conseguir (no completo, solo para dar mas detalle).

#include <EEPROM.h>
#include <InfluxDbClient.h>
#include <InfluxDbCloud.h>

#define INFLUXDB_ORG      76
#define INFLUXDB_BUCKET   96
#define INFLUXDB_URL      116
#define INFLUXDB_POINT    146
#define INFLUXDB_TOKEN    166

char influxdb_org[20];     
char influxdb_bucket[20];  
char influxdb_url[30];     
char influxdb_point[20];  
char influxdb_token[100]; 

InfluxDBClient client(influxdb_url, influxdb_org, influxdb_bucket, influxdb_token, InfluxDbCloud2CACert); 
Point sensor(influxdb_point); 

void setup()
{
  Serial.begin(115200);

  EEPROM.get(INFLUXDB_DEVICE, influxdb_device);                      
  EEPROM.get(WIFI_SSID, wifi_ssid);                              
  EEPROM.get(WIFI_PASSWORD, wifi_password);                              
  EEPROM.get(INFLUXDB_ORG, influxdb_org);                                  
  EEPROM.get(INFLUXDB_BUCKET, influxdb_bucket);                               
  EEPROM.get(INFLUXDB_URL, influxdb_url);                            
  EEPROM.get(INFLUXDB_POINT, influxdb_point);                                
  EEPROM.get(INFLUXDB_TOKEN, influxdb_token);

  if(!client.validateConnection())
  {
    Serial.println(F("**Error de conexion**"));                                     
  }
}

void loop() {
  // put your main code here, to run repeatedly:

}

Todo dependerá de la librería que uses.

La librería que yo conozco puedes crear el objeto sin parámetros y luego con la función setConnectionParams establecerlos.

#include <EEPROM.h>
#include <InfluxDbClient.h>
#include <InfluxDbCloud.h>

#define INFLUXDB_ORG      76
#define INFLUXDB_BUCKET   96
#define INFLUXDB_URL      116
#define INFLUXDB_POINT    146
#define INFLUXDB_TOKEN    166

char influxdb_org[20];     
char influxdb_bucket[20];  
char influxdb_url[30];     
char influxdb_point[20];  
char influxdb_token[100]; 

InfluxDBClient client;
Point sensor(influxdb_point); 

void setup()
{
  Serial.begin(115200);

  EEPROM.get(INFLUXDB_DEVICE, influxdb_device);                      
  EEPROM.get(WIFI_SSID, wifi_ssid);                              
  EEPROM.get(WIFI_PASSWORD, wifi_password);                              
  EEPROM.get(INFLUXDB_ORG, influxdb_org);                                  
  EEPROM.get(INFLUXDB_BUCKET, influxdb_bucket);                               
  EEPROM.get(INFLUXDB_URL, influxdb_url);                            
  EEPROM.get(INFLUXDB_POINT, influxdb_point);                                
  EEPROM.get(INFLUXDB_TOKEN, influxdb_token);

  client.setConecctionParams((influxdb_url, influxdb_org, influxdb_bucket, influxdb_token, InfluxDbCloud2CACert); 

  if(!client.validateConnection())
  {
    Serial.println(F("**Error de conexion**"));                                     
  }
}

void loop() {
  // put your main code here, to run repeatedly:
}

Hola y muchas gracias Victorjam.

Esa es la solución :slight_smile: