ook cercherò di esser il più chiaro possibile vi posto anche i mie file di programmazione per risolvere questo quesito.
Non ci sei riuscito minimamente.
Le classi servono per accorpare insieme variabili (dati ) e funzioni metodo che operano su i dati. I dati non dovrebbero essere accedibili nello stesso modo in cui accedi alle funzioni, per questo le variabili interne vengono dichiarate "private:". "private:" e una sottosezione simile a "public:" l'altra è "protect:"
class RGB
{
// le variabili e funzioni dichiarate qui sono da considerare private e quindi da usare solo ad uso e consumo della classe o oggetto
public:
void ledrosso (void);
void ledverde (void);
void ledblu (void);
void cambio_colori(void);
void variabili_colori(void);
byte REDPIN;
byte GREENPIN;
byte BLUEPIN;
int rossorandom;
int verderandom;
int blurandom;
private:
// le variabili e funzioni dichiarate qui sono da considerare private e quindi da usare solo ad uso e consumo della classe o oggetto
protect:
// le variabili dichiarate sono accessibili solo da classi che ereditano questa.
};
Come ti hanno fatto notare manca il costruttore che normalmente è dichiarato publico e serve per inizializzare le variabili membro dell'oggetto.
Da una classe si crea una istanza di classe, detta oggetto, questo si usa come se fosse una variabile di tipo standard (quasi)
In mancanza di un costruttore il conpilatore ne inserisce uno automaticamente, diversamente sarebbe impossibile creare istanza di classe.
int rossorandom, ecc sono variabli glogali e variabili membro publiche di classe RGB.
Ad una variabile publica membro di classe si accede tramite l'operatore "." come si fa con le funzioni, per accedervi però prima si deve creare istanza di classe, cioè oggetto. Quindi nel tuo caso accedi a rossorandom di oggetto con rgb.rossorandom. r,g,b invece sono variabili globali non appartenenti a classi o oggetti e sono visibili da tutto il codice.
Tuttavia quando si usa dividere il codice in moduli C, cioè in più file, la variabile globale è visibile sono all'interno del modulo in cui è stata dichiarata.
Per renderla visibile anche ad altri moduli bisogna farlo presente al compilatore C, che c'è una variabile dichiarata esternamente a questo modulo che vogliamo usare. Si risolve dichiarando extern int rossorandom nel file .cpp dove c'è il setup() e loop(), stessa cosa per r,g,b. extern int r;
Ora, prenditi tempo per rispondere, perchè io ci ho messo 10 minuti abbondanti per scrivere ste quattro righe, che però risultano molto più comprensibili delle tue.
Ciao.