Auteur Sujet: Ecran Elegoo 2.8pouces pour boitier de commande DCC  (Lu 843 fois)

Daniel075

  • Newbie
  • *
  • Messages: 22
    • Voir le profil
Ecran Elegoo 2.8pouces pour boitier de commande DCC
« le: mai 31, 2021, 01:22:18 pm »
Je projette d’effectuer un bond techno avec mon boitier de commande DCC et notamment substituer la face avant (oled 0.9 pouce et des boutons) par un écran tactile 2.8pouces Elegoo (ili9341).
Ce boîtier de pilotage analogique ou digitale (merci aux réalisateurs de DCC++) tout intégré fonctionne avec ou sans automatisme de va et vient, actionne les fonctions, enregistre les adresses des locomotives et je vais lui ajouter la possibilité de modifier les CV. L’article « Réalisation d’un va et vient automatique et réaliste » par Dominique (rubrique Projet 16 fev 2016) décrit une réalisation très similaire.
Je m’interroge sur le choix du Elegoo 2.8 . Pas trop cher (15€) bonne luminosité, rafraichissement convenable (mise à jour de 5 à 6 valeurs numériques en une cinquantaine de millisecondes). Il ne dispose cependant pas de liaisons externes (tous les i/o de la carte UNO sont utilisés) et je dois  détourner les 4 liaisons vers la carte micro-SD  (inutile pour mon projet) pour communiquer. Par ailleurs la bibliothèque Elegoo fournie avec l’écran intègre une seule police de caractères.
Auriez vous d’autres expériences d’écran tactile (environ de même taille) , comment vous communiquez, et comment ajouter une police de caractère ?

msport

  • Hero Member
  • *****
  • Messages: 1495
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Ecran Elegoo 2.8pouces pour boitier de commande DCC
« Réponse #1 le: mai 31, 2021, 03:30:52 pm »
Bonjour,

suite à l'article de Christian, http://locoduino.org/spip.php?article255, j'ai réalisé un mini TCO tactile :
https://forum.locoduino.org/index.php?topic=820.msg8953#msg8953
le lien vers les fichiers Dropbox :
https://www.dropbox.com/sh/br711rznbz1gsp0/AAA6_8ATumpN_wTLTU0fOW1ia?dl=0

Bien choisir sa (ses) plateforme suivant l'objectif poursuivi. Et certainement répartir les fonctions sur plusieurs Arduino.
En particulier et c'est l'avantage de DCC++ de séparer la création des commandes de la génération du DCC et de ses timings délicats.
Coté écran, voir ce que le driver retenu permet de faire en matière de graphique et de polices car c’est lui, le driver qui détermine les polices disponibles.
A noter que la mise au point des zones de l’écran tactile est un peu délicat et que sa gestion est très consommatrice de ressources.
Coté rafraichissement de l'écran, optimiser sa programmation pour ne mettre à jour que la zone modifiée. Un écran en mode parallèle est certainement plus rapide qu'un autre accédé par un bus série (SPI ou I2C)

Il y a certainement d'autres réalisations à trouver sur Locoduino et même ailleurs.

Bon courage.

Cordialement

Daniel075

  • Newbie
  • *
  • Messages: 22
    • Voir le profil
Re : Ecran Elegoo 2.8pouces pour boitier de commande DCC
« Réponse #2 le: mai 31, 2021, 04:04:10 pm »
Merci pour ce retour, L'article "Ecran couleur Tactile Kuman" de Christian ne m'avait pas échappé, Il est cependant trop grand pour ma petite boite . Concernant  les ressources machines, mes précédentes réalisations m'ont conduit à des programmes plus importants coté interface utilisateur que l'automatisme par lui-même incluant DCC++. Mon projet utilise une carte UNO pour gérer l'écran et l'interface utilisateur, Un NANO où seront implémentés en boite noire le logiciel DCC++ et les automatismes et un second NANO qui gérera la communication entre les deux .

msport

  • Hero Member
  • *****
  • Messages: 1495
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Ecran Elegoo 2.8pouces pour boitier de commande DCC
« Réponse #3 le: mai 31, 2021, 05:02:43 pm »
Si vous voulez d'autres polices pour votre écran, déterminez quel est le circuit qui le pilote (driver).
Pour cela parmi les exemples de la bibliothèque MCU_FRIEND_kbv, il y en a qui commencent par interroger l'écran et affichent le résultat sur le serial. Après, vous le configurerez comme tel dans votre setup.

https://forum.locoduino.org/index.php?topic=761.msg8495#msg8495

Par ailleurs, la communication entre deux Arduino, peut se faire via un lien serial ou éventuellement par I2C.
Peut être pas besoin de mobiliser un troisième Arduino pour cela ?

https://forum.locoduino.org/index.php?topic=461.msg4651#msg4651
Cordialement

Daniel075

  • Newbie
  • *
  • Messages: 22
    • Voir le profil
Re : Ecran Elegoo 2.8pouces pour boitier de commande DCC
« Réponse #4 le: juin 01, 2021, 12:27:31 pm »
J’ai effectivement trouvé dans Elegoo_GFX.cpp un appel «  #include "glcdfont.c" » et le fichier glcdfont.c a effectivement la structure d’un fichier de police de caractères. Ce fichier doit être connu car il est mentionné sous la library Adafruit (et correspond suivant les commentaires au standard ASCII 5x7 font).  Tout ceci m’amène un peu au delà de mes compétences, et sans une procédure précise je vais rester sur cette solution. Concernant d’autres écrans tactiles, merci de m’avoir fait connaître le site ebay que je n’utilisais pas (plus habitué à Aliexpess ou Amazon). J’ai également noté vos suggestions sur la communication entre les deux processeurs. J’ai utilisé I2C pour mon précédent projet (liaison à l’écran oled SSD1306) l’écran Elegoo qui s’enfiche sur la carte Arduino UNO masque les fils de liaison (SDA A4 et SCL A5). Je n’ai par ailleurs pas d’expérience dans l’utilisation de la liaison série TX et RX (D1 et D2) que j’ai tjrs laissées libres pour ma connexion PC. La solution d’un circuit NANO me semble d’une gestion plus simple (probablement une partie en assembleur), mais je n’en suis pas encore là.

Daniel075

  • Newbie
  • *
  • Messages: 22
    • Voir le profil
Re : Ecran Elegoo 2.8pouces pour boitier de commande DCC
« Réponse #5 le: juin 02, 2021, 11:22:07 pm »
Voici une procédure permettant d disposer de différentes polices de caractères avec l’écran Elegoo 2.8 inch (320x240) ili9341 (connecté en 8bits //) :
1 - Ne pas utiliser les bibliothèques Elegoo_GFX.h et Elegoo_TFTLCD.h  livrées avec l’écran.
2 - Mettez à la place Adafruit GFX Library  et Adafruit TFTLCD Library ainsi que TouchScreen, plus le ou les fichiers de polices de caractères souhaités ( puisés dans le répertoire Fonts de Adafruit_GFX) . Par exemple :  FreeMonoBoldOblique9pt7b.h
3- Pour appeler une police, utiliser l’instruction : tft.setFont(&FreeMonoBoldOblique9pt7b)
Ci-aprés qqs lignes du prgm pour illustrer la démarche.

#include <Adafruit_TFTLCD.h>  //  bibliothèques chargées avec Adafruit TFTLCD Library
#include <pin_magic.h>
#include <registers.h>

#include <Adafruit_GFX.h>     //   bibliothèques chargées avec Adafruit GFX Library
#include <Adafruit_GrayOLED.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>

#include <TouchScreen.h>
#include <Fonts/FreeMonoBoldOblique9pt7b.h>

************
***********
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

void setup(void) {
    Serial.begin(9600);
     tft.reset();
 
     uint16_t identifier = tft.readID();
     identifier=0x9341; 
     tft.begin(identifier);

     tft.setRotation(3);
     tft.fillScreen(BLACK);

   tft.setFont(&FreeMonoBoldOblique9pt7b);
    tft.setCursor(40,15); tft.setTextSize(1) ; tft.setTextColor(WHITE) ;
   tft.print("Choisir le mode") ;