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?