Un aiuto su una classe

Buongiorno ragazzi. Sto migliorando il mio progetto (volendolo rendere universale e più flessibile) con una classe. Non avendolo mai fatto colgo l'occasione per migliorarmi anche da un punto di vista conoscitivo (forse lo faccio più per questo che per il motivo indicato precedentemente).
Ho creato il .h e il .cpp. Ho dichiarato le varie variabili che tutti gli oggetti avranno in comune e i metodi sia per settarle che per prelevarle, nonche il metodo che alla richiesta mi restituirà il json con tutte le informazioni sullo stato dell'oggetto.
Ok, tutto ciò funziona come dovrebbe, a parte il problema relativo al json che ho illustrato in un'altra discussione e che al momento ho risolto abbreviandolo in modo da avere al massimo una lunghezza di 90 caratteri da inviare con client.print().
Veniamo al dunque, ciò che vi volevo chiedere è:
Ho l'oggetto con variabili in comune, quali temperatura, mode di funzionamento, ventola, stati ecc... E dovrei dichiararne alcune altre che variano a seconda di una proprietà dell'oggetto che vado a creare.
Chessò, se dichiaro come brand 1 devo dichiarare:

//dato COMFEE
byte comandocuc[12] = {0xB, 0x2, 0x4, 0xD, 0xB, 0xF, 0x4, 0x0, 0x0, 0x0, 0xF, 0xF};
int datacuc[12] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
int sleepcuc[12] = {0xB, 0x2, 0x4, 0xD, 0xE, 0x0, 0x1, 0xF, 0x0, 0x3, 0xF, 0xC};
const byte tempcuca[14] = {0x0, 0x1, 0x3, 0x2, 0x6, 0x7, 0x5, 0x4, 0xC, 0xD, 0x9, 0x8, 0xA, 0xB};
const byte offcuc[12] = {0xB, 0x2, 0x4, 0xD, 0x7, 0xB, 0x8, 0x4, 0xE, 0x0, 0x1, 0xF};
const byte sweepcuc[12] = {0xB, 0x2, 0x4, 0xD, 0x0, 0xF, 0xF, 0x0, 0xE, 0x0, 0x1, 0xF};
const byte ventolacuca[4] = {0xB, 0x9, 0x5, 0x3};
const byte modecuca[3] = {0x0, 0x4, 0xC};
byte t=0;

mentre se dichiaro come brand 2 devo dichiarare:

//dato ZEPHIR
unsigned long data[5] = {0x000000, 0x000000, 0x000000, 0x000000, 0x000000};
byte primo[6] = {0x6, 0x5, 0xC, 0x6, 0x0, 0x0};
byte secondo[6] = {0x0, 0x0, 0x0, 0x2, 0x0, 0xC};
byte terzo[6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
byte quarto[6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
byte quinto[6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
const byte tempcama[17] = {0xC, 0xD, 0xE, 0xF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC};
const byte modecama[3] = {0x2, 0x3, 0x1};
const byte ventcama[4] = {0x0, 0x2, 0x3, 0x1};

Se metto entrambi nell'h per poi crearli nel costruttore a seconda di quello che mi serve, probabilmente, anzi sicuramente lui alla creazione dei due (non ha importanza di che brand dichiaro) lui alloca lo spazio per entrambi e per due volte perchè alla compilazione la ram utilizzata è oltre il 90% mentre quando erano all'interno dello sketch occupavano al max 60%.
Come posso fare per far si di dichiarare solo il gruppo di variabili che mi servono per un determinato brand???
Spero di aver esposto bene il problema. Ringraziandovi anticipatamente vi auguro una serena giornata.

ciao,

la spiegazione completa richiederebbe molto tempo...comunque...per fare una cosa del genere devi appunto sfruttare le caratteristiche della programmazione ad Oggetti....(ereditarietà, polimorfismo, overload, override...etc).

In pratica devi crearti una "Super Classe" che contenga i dati generici/comuni ed estendere questa "Super Classe" alle due "Sotto Classi" specifiche per gli Oggetti dove andrai a specificare od estendere o modificare quanto già presente nella "Super Classe".

per farti il classico esempio...crei una Classe Persona (Nome, Cognome , Età); puoi creare molteplici sottoclassi tipo "Studente" e "Professore" che erediteranno (:slight_smile: Persona. Queste due potranno magari aggiungere: (Studente) anno scolastico ; (Professore) materia insegnata.
Adesso in ogni Sotto Classe...puoi aggiungere/modificare/utilizzare i dati e metodi presenti in Persona.

Ti conviene cercare una guida per la programmazione ad oggetti...ci sono un po' di cose da leggere e sapere.

spero di non aver detto boiate.

ORSO2001:
ciao,

la spiegazione completa richiederebbe molto tempo...comunque...per fare una cosa del genere devi appunto sfruttare le caratteristiche della programmazione ad Oggetti....(ereditarietà, polimorfismo, overload, override...etc).

In pratica devi crearti una "Super Classe" che contenga i dati generici/comuni ed estendere questa "Super Classe" alle due "Sotto Classi" specifiche per gli Oggetti dove andrai a specificare od estendere o modificare quanto già presente nella "Super Classe".

per farti il classico esempio...crei una Classe Persona (Nome, Cognome , Età); puoi creare molteplici sottoclassi tipo "Studente" e "Professore" che erediteranno (:slight_smile: Persona. Queste due potranno magari aggiungere: (Studente) anno scolastico ; (Professore) materia insegnata.
Adesso in ogni Sotto Classe...puoi aggiungere/modificare/utilizzare i dati e metodi presenti in Persona.

Ti conviene cercare una guida per la programmazione ad oggetti...ci sono un po' di cose da leggere e sapere.

spero di non aver detto boiate.

Immaginavo di dover utilizzare l'ereditarietà, ma immaginavo non fosse il sistema più furbo perchè da quello che ho capito dovrei creare tante classi figlie quanti sono i brand (avendo ognuno le proprie particolarità) esatto??? Che immaginando il progetto completo, ne uscirebbero fuori veramente tante!!! Vabbè, se la strada corretta è quella mi metterò al lavoro.
Grazie mille sei stato gentilissimo.

La soluzione più corretta e "pulita" è quella (bravo Orso, non mi deludi mai!), unita al salvataggio delle stringhe in questione in PROGMEM.

Però tieni conto che se in uno sketch richiami tutti i brand, in qualche modo tutti i dati dovranno finire almeno nella flash, non ne scappi.

SukkoPera:
La soluzione più corretta e "pulita" è quella (bravo Orso, non mi deludi mai!), unita al salvataggio delle stringhe in questione in PROGMEM.

Però tieni conto che se in uno sketch richiami tutti i brand, in qualche modo tutti i dati dovranno finire almeno nella flash, non ne scappi.

Ok. Allora procedo per la strada dell'ereditarietà.
No, in uno sketch sarà ben difficile che richiamerò tutti i brand. Praticamente il succo del progetto è che ho scritto un'app per ios per controllare al momento i climatizzatori da remoto (sono partito da un progetto sul quale ho lavorato un paio di anni fa), e sempre al momento chiaramente ho le due marche che ho in casa. Ho voluto creare la classe perchè dall'app selezionando la marca e con apposita funzione la aggiungo all'array di oggetti, e avendo oltre alla marca per ogni climatizzatore (non obbligatorio) una cella di carico che mi dà il livello del contenitore per la condensa ho anche bisogno di dichiarare alla creazione dell'istanza diversi pin al quale è collegata la cella di carico.
Comunque alla fine della fiera al massimo direi che vengono richiamati un paio di brand alla volta, però per poterli aggiungere o modificare a richiesta senza dover ogni volta ricaricare lo sketch, devo avere comunque disponibili che variabili dichiarare.
Un ultima cosa. Le varie classi figlie posso aggiungerle nel file h della Superclasse o devo creare un file a parte includendo ovviamente il file della superclasse??? Parlo sempre per fare un lavoro pulito.
Grazie mille ancora.

Fai come sei più comodo.

Ottimo grazie. Ok procedo con il tutto in uno.
Siete fantastici.