Nuovo font

Buona sera a tutti.
A grande richiesta 8) ( non é vero!!) apro questo topic per capire meglio come funziona una libreria.

Un po di storia:
Qualche tempo fa avevo fatto un computer di bordo per il mio amatissimo scooter.
Funzionalità:
Velocità (gps)
Velocità max media e istantanea ( sempre gps)
Altimetro (GPS
contachilometri parziale e totale
Livello carburante + autonomia
Voltometro
Controllo pressione e temperatura dei pneumatici (TPMS)
data e ora.
Avevo fatto un piccolo video per far vedere il prodotto finale. Dura 3 minuti per dare il tempo al computer di bordo di ricevere i dati dei pneumatici.

Il problema piu grande che ho avuto era l'effetto blinking che avevo sulla velocità istantanea dato che volevo dei numeri molto grandi.
Ho pensato e realizzato un nuovo (almeno per me) sistema per disegnare questi numeri.
Questo sistema l'ho racchiuso in una biblioteca perché sia facilmente utilizzabile per una persona che ne avesse bisogno ed è' stata anche l'occasione per imparare a creare una biblioteca.

Potete trovare tutto il progetto QUI.

Lo scopo di questo topic è quello di capire alcune cose oscure sulla libreria sopratutto l'utilizzo dei puntatori.

Il file .h

#ifndef SavSegNum_h
#define SavSegNum_h
    
#include <Arduino.h>
#include <MCUFRIEND_kbv.h>
    
class SavSegNum
{
public:
SavSegNum();
void setDim(uint16_t l=10, uint16_t h=17, uint16_t hs=3, uint16_t inr=12);// l=segment length; h=segment heigth; hs= segment thickness, inr=Whitespace character
void setColors(uint16_t color, uint16_t bColor);//color=segment color; bColor= back color
void printSegNum(uint16_t posX, uint16_t posY, char charToPrint[]);
void init(MCUFRIEND_kbv& tft);
private:
void VerticalC(uint16_t posxa, uint16_t posya);
void HorizontalC(uint16_t posxa, uint16_t posya);
void Vertical(uint16_t posxa, uint16_t posya);
void Horizontal(uint16_t posxa, uint16_t posya);
int16_t _l, _h, _hs, _inr;
uint16_t _color, _bColor;
MCUFRIEND_kbv _tft;
};
    
#endif

Il .cpp ( solo la parte che mi interessa)

#include <Arduino.h>
#include "SavSegNum.h"

SavSegNum::SavSegNum()
{
}

void SavSegNum::init(MCUFRIEND_kbv& tft)
{
  _tft = tft;
}

e' giusto creare l'oggetto _tft come ho fatto io?

Ho fatto, come @nid69ita mi aveva detto di provare, di modificare il .h
invece di

MCUFRIEND_kbv _tft;

mettere

MCUFRIEND_kbv& _tft;

Il problema è che il mio scooter è in Francia, (dovevo andare a prenderlo nel mese di aprile ma come tutti noi sappiamo non possiamo spostarci) quindi non posso provare la modifica, compilando pero' ho questo;
Senza &

//Lo sketch usa 43736 byte (17%) dello spazio disponibile per i programmi. Il massimo è 253952 byte.
//Le variabili globali usano 1319 byte (16%) di memoria dinamica, lasciando altri 6873 byte liberi per le variabili locali. Il massimo è 8192 byte.

Con &

//Lo sketch usa 43704 byte (17%) dello spazio disponibile per i programmi. Il massimo è 253952 byte.
//Le variabili globali usano 1268 byte (15%) di memoria dinamica, lasciando altri 6924 byte liberi per le variabili locali. Il massimo è 8192 byte.

Interessante!