Scrivere una libreria per Arduino!

Devi documentarti sul paradigma OO (Object Oriented) o anche genericamente detto OOP (P sta per Programming)

Un oggetto per definizioni esiste ed è istanza di un qualcosa, nel mondo reale l'automobile è oggetto istanza di classe CarFactory().

Il programmatore che vuole creare istanza di classe CarFactory non ha necessità di conosce come funziona internamente CarFactory. I membri di CarFactory sono interni e rappresentano le proprietà. Alcune proprietà potrebbero essere, Colore, Numero di sportelli, Freni Anteriori a Disco, Freni Posteriori a tamburo ecc

Io voglio la mia car e scrivo:

CarFactory ferrariDaytona(Ferrari, Daytona, Red);

ferrariDaytona è instanza oggetto di classe CarFactory, le proprietà specificate: Ferrari, Daytona, Red sono proprietà dell'oggetto e io adesso non posso cambiarle senza che l'oggetto se ne accorge, per questo motivo
le proprietà si modificano attraverso i membri funzione detti anche metodi.

ferrariDaytona.setColor(Yellow);

Ho cambiato colore all'oggetto ferrariDaytona, se la proprietà colore fosse publica potrei scrivere:

ferrariDaytona.colore = Yellow;

Ma in questo modo l'oggetto non potrebbe agire internamente per modificare il colore.

Se sei tu che devi scrivere la classe CarFactory allora devi fare in modo che il programmatore che crea istanza
oggetto lo possa usare senza conoscere come è fatta CarFactory, fornirai quindi i metodi necessari per modificare le proprietà interne, la modifica di alcune proprietà coinvolge altre proprietà e la chiamata al metodo di permette di gestire le proprietà coinvolte, in modo che l'oggetto sia sempre consistente e controllato. I colori disponibili se tu che li decidi e varieranno da modello a modella di auto. CarFactory internamente userà altre classi e altre useranno altre classe e così via fino ad arrivare alla macchina di stampaggio lamiere.

Si tratta di un esempio che non può spiegarti tutto, non puoi avere ora le idee chiare. Spero ti possa essere di aiuto e non ti confonda di più le idee. Comunque consolati che a questo livello di apprendimento è normale avere le idee confuse.

PS: Se non fosse chiaro, le variabili membro non sono mai pubbliche ma sempre private. I metodi che servono al
programmatore che creerà istanza devono essere pubblici, mentre i metodi usati internamente sono privati o protetti (protected).

Ciao.