Bonjour,

Dans mon projet je commande un écran TFT SPI avec la bibliothèque GFX Adafruit, depuis un Arduino "client" ; la dalle tactile est gérée par la bibliothèque URTouch.h

En fait j'utilise PDQ_GFX qui est une version optimisée, que je recommande d'ailleurs : https://hackaday.io/project/6038-pdq...r-lcd-graphics

Cette bibliothèque ne permet apparemment que d'afficher des bitmaps en ROM (écrits avec PROGMEM)

Dans mon projet l'Arduino "client" contient un petit buffer en RAM de 256 octets que je peux remplir à distance via un autre Arduino "serveur"

Un bitmap monochrome ne prend pas beaucoup de place (un octet = 8 pixel), un sprite de 16 x 16 Pixels n'occupe que 32 octets.
Ca tiens largement en RAM, même avec toutes les variables et mon fameux buffer de 256 octets il me reste encore 1084 octets de RAM libre
Je n'utilise pas la maudite classe string donc pas de soucis de fragmentation... je pense d'ailleurs passer mon buffer RAM à 512 octets.

Le but final c'est de réaliser un module Interface Homme Machine avec un écran tactile et des entrées/sorties entièrement pilotables via Ethernet.

J'ai déjà bien avancé.

Le module Interface Homme Machine est composé d'un Arduino UNO, d'un écran tactile SPI TFT et d'un shield Ethernet.
L'arduino UNO fonctionne en client HTTP.
Il envoie une requête à un serveur à chaque fois que j'appuie sur l'écran tactile.
Le serveur répond en envoyant des "instructions" que l'Arduino exécute...
J'ai déjà programmé presque toutes ces fameuses "instructions" qui permettent d'afficher du texte et de dessiner des formes géométriques en couleur.
Ces instructions couvrent l'ensemble des fonctions de l'afficheur TFT.
Certaines instructions permettent aussi d'écrire ou de lire les broches d'entrée/sortie de l'Arduino (la demande de lecture impose logiquement à l'Arduino de faire un deuxième requête au serveur en passant en paramètre les valeurs lues)
Ca fonctionne bien et c'est rapide, ça tiens dans la ROM (il me reste encore 22% de ROM de libre) et j'utilise très peu de RAM ce qui est une bonne surprise (quand j'ai expliqué ce que je voulais faire au début de mon projet, beaucoup de personnes se sont montrées septiques sur la capacité de l'Arduino UNO à gérer à la fois un écran TFT tactile et un shield Ethernet, moi-même je m'attendais à devoir utiliser un Arduino MEGA)

Tout l'intérêt de cette Interface Homme Machine est son côté "universel" :
- je commande tout depuis le serveur ;
- le projet final comporte un serveur et plusieurs interfaces homme machine clientes
le code contenu dans les Arduino des interfaces homme machine est en fait indépendant de l'application finale, ce qui a de nombreux avantages :
=> pour faire évoluer le projet je n'aurais besoin de ne mettre à jour que le code du serveur
=> ces interfaces homme machine pourront être utilisées ensuite dans n'importe quel projet, un câble Ethernet suffit et peut transporter données et alimentation sur une grande longueur de façon fiable
=> ces interfaces homme machine peuvent être adaptées en version WIFI en utilisant un autre type d'Arduino

Donc voilà pourquoi je cherche à pouvoir afficher sur l'écran TFT un bitmap (un petit sprite) stocké en RAM.

Pour conserver le côté "universel" de l'interface homme machine les bitmaps ne doivent pas êtres gravés en ROM mais stockés en RAM, en étant envoyés par le serveur.

Si je veux changer le ou les bitmaps à afficher j'aurais juste besoin de mettre à jour le code sur le serveur.

Merci

A bientôt