Libreria TFT_eSPI senza modificare file setup

Buongiorno a tutti,
mi capita spesso di usare la libreria in oggetto per utilizzare diversi display, l'unico fastidio di questa libreria è dover modificare il file setup per impostare i pin del display, il processore del display etc etc
Finchè si usa un solo tipo di display va bene, ma quando si hanno diversi progetti con diversi display, ogni modifica di un codice comporta la modifica del file di setup per poter caricare il programma per il relativo display.
La domanda è questa: è possibile inserire nel codice le impostazioni del display senza che la IDE vada a prendere questi dati dal file di setup? In modo che ogni progetto ha le sue impostazioni; di fatto i principali dati sono i pin di gestione del display, i pixel, il processore e poco altro.
Mi pareva nelle varie ricerche di essermi imbattuto in un esempio che utilizzava questo metodo, ma non sono più riuscito a trovarlo...
Qualcuno che lo ha già fatto e sa indicarmi come fare?

Grazie a tutti :slight_smile:

La domanda da per scontato il coinvolgimento di IDE Arduino, coinvolgimento che non c'è. In sostanza la IDE non va a prendere dal setup.

Quindi ad intuito rispondo, pensando che ti scoccia dovere scrivere nel setup i dati quali i pin e la dimensione. Il massimo che puoi fare è quello di definire delle macro tramite #define.

Potrebbe essere utile postare il setup di un tuo programma per vedere come apportare le modifiche e se poi queste per te sono vantaggiose,

Ciao.

@Maurotec: ... mi sa che lui si riferisce non al "setup()" funzione del framework Arduino presente nel suo .ino, ma ... allo "User_Setup.h" che è un file che include la libreria in cui l'utente definisce il display che usa ... :roll_eyes:

SE è così, come al solito, per come funziona l'IDE, c'è ben poco da fare ... da .ino NON è possibile andare a cambiare le definizioni che sono in qualche file incluso da una libreria ... :confused:

Guglielmo

Ciao a entrambi,
scusate, non ho descritto bene, ma Guglielmo ha colto nel segno, il file "User_Setup.h" è presente dentro la libreria, e bisogna cambiare al suo interno varie definizioni, diverse per ogni display...
Quindi non si può fare le definizioni nel "setup()" dentro lo sketch? E non andare a pescare quelle dentro al file nella libreria? Nemmeno se sono fatte a seguire nel "setup()" in modo da andare a sovrascrivere quelle "prese" dalla libreria?
Eppure mi pareva di aver visto uno sketch così, dite che non si riferiva alla libreria TFT_eSPI?

Grazie

Ok in questo caso non c'è modo per modificare il contenuto del file header di libreria. L'unica cosa che puoi fare è quella di spostare in locale la libreria in questione, ma questo è semplice da fare quando la libreria è ad esempio la LiquidCrystall, in quanto si tratta di soli due file.

L'altra soluzione è quella di creare una copia della libreria (cambiando nome) e all'interno prevedere diversi file header per ogni display.

Posta il link alla libreria in questione, perché tra le varie ne trovo per altre piattaforme di sviluppo come platform.Io.

Ciao.

NO, non si può fare ... è per come lavora l'IDE di Arduino che compila in modo indipendente e separatamente le varie cose per cui, la libreria, normalmente, viene compilata prima del tuo .ino e quindi, quest'ultimo, è ininfluente sulla compilazione già effettuata della libreria.

Esistono casi in cui è possibile, ma la libreria deve essere fatta in un modo particolare, usando files .hpp che sono dei .h e .cpp messi assieme ... alcune libreri ho visto che lo fanno dando la possibilità all'utilzzatore di modificare con degli #define i parametri usati poi dalla libreria ... un esempio è la IRremote.

Eccola QUI ... un bel casino :grin:

Guglielmo

Già, però un tentativo si potrebbe fare poiché se ci fai caso molte inclusioni non usano <> ma gli apici. Io proverei prima a creare una cartella di nome src dentro la cartella dello sketch. Poi nello sketch per includere l'header file principale dovrò scrivere es:

#include "src/TFT_eSPI/TFT_eSPI.h"

Stessa cosa per i fonts.
Ma è lavoro per chi già sa come affrontarlo. Cioè non è lavoro per l'utente arduino comune.

Ciao.

Infatti ... è un lavoraccio ... :roll_eyes:

Tocca rendere "locale" (quindi non installata tra le libreria) la libreria, modificare i vari "include" in modo che trovi tutto, copiarla nella cartella del progetto per ogni applicazione, personalizzarla per ogni applicazione ... :crazy_face:

Guglielmo

Quindi creare il file "User_Setup.h" con le impostazioni che mi servono, inserirlo dentro la cartella src che si trova nella cartella dello sketch e poi richiamarlo... Però se come dice Guglielmo la libreria viene compilata prima, non serve a nulla....
Se è solo questo, posso provare, altrimenti non fa per me :slight_smile:

NO, non è solo questo ... leggi sopra :wink:

Guglielmo

Ah, ok, stavi ancora scrivendo.... allora penso di non riuscire a fare questo...
L'unica quindi è cercare librerie specifiche per ogni processore del display :wink:
Grazie

Ma anche se vi riuscissi non avresti capito le implicazioni e non sapresti cavartela da solo in caso di mancata compilazione, detto in altri termini generici: non è cosa per l'utente arduino comune.

Una delle implicazioni riguarda il mancato aggiornamento della libreria che sposti in locale. locale ha un significato che evidentemente non è facilmente comprensibile per utente arduino comune. Diciamo che spostarla in locale rende la libreria facente parte del tuo progetto. Nota che in ambiente embedded si tende proprio a legare le librerie al progetto, mentre con arduino questa metodologia non è prevista e funziona all'opposto.

Ciao.

Ciao,
si Mauro, ho capito perfettamente, so cosa vuol dire l'utilizzo della libreria in locale, ma consapevolmente non ne sono in grado, grazie delle informazioni, cerco altre soluzioni :wink:

La soluzione più semplice che mi viene in mente è usare PlatformIO e quindi cambiare anche IDE.

Con PlatformIO non solo puoi usare librerie locali a livello di progetto, ma per quelle remote puoi anche specificare la versione specifica da utilizzare.

Ciao,
completamente ignorante su questa cosa, l'ho sentita già diverse volte però, mi informo un'attimo :slight_smile: grazie

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.