Menu


Stacks Image 36912
Je vais vous présenter l'écran 2.4 TFT pour l'Arduino. Ce n'est pas une nouveauté, cet écran existe déjà depuis quelques années, mais ayant une opportunité pour le tester, je vais vous faire part de mes tests.
Vous pouvez vous procurer cet écran sur Amazon ou sur le site d'AZ-Delivery.

1 Présentation de l'écran

Acheté chez Az-Delivery, l'envoi est rapide et le packaging très soigné. L'écran est bien protégé.
Stacks Image 969812
Coté écran, un bouton-poussoir permet de "resetter" l'Arduino. Le stylet livré avec la carte me rappelle le bon vieux temps des organisateurs PALM 😂
Stacks Image 969985

2 Récupération des informations et pilotes

N'ayant pas d'informations sur le site d'AZ-Delivery sur cette carte, j'ai commencé à rechercher sur la toile. De nombreux articles proposent divers pilotes comme la bibliothèque Adrafruit GFX Library et la bibliothèque Mcufriend_kbv. Malheureusement, si certains exemples de programmes fonctionnent, je n'ai pas réussi à faire fonctionner l'écran tactile avec le programme tftpaint.
De plus aucune information sur la carte me permettait de trouver le fabricant de cette carte.
Stacks Image 969988
C'est par hasard que je suis arrivé sur ce site lcdwiki.com avec une multitude d'informations sur divers écrans LCD. En sélectionnant cette page http://www.lcdwiki.com/2.4inch_Arduino_Display, j'ai trouvé toutes les informations sur cet écran avec les bons pilotes et exemples de programmes.
Stacks Image 969993
Utilisation des pins de l'Arduino
Comme on le constate, l'écran utilise pratiquement toutes les broches de l'Arduino Uno, il faudra privilégier l'utilisation d'un Arduino Méga si on veut ajouter des périphériques d'acquisition de données. Pour la programmation de la carte, vous trouverez un lien pour télécharger les trois librairies adaptées à cet écran.
Stacks Image 969998
Les librairies se trouvent dans le fichier zippé dans le sous-dossier 1-Demo/Demo_Arduino/install librairies. Des exemples supplémentaires se trouvent dans le dossier Exemple. Il y a beaucoup d'informations dans des fichiers PDF sur les spécifications techniques de cette carte.
L'installation des librairies ne présente pas de difficulté, il suffit de déposer les dossiers dans le dossier librairies du programme Arduino IDE.

3 Premier programme

Nous allons créer notre premier programme Hello World ! Commençons par la déclaration des librairies.
#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library
On définit la carte écran.
//définition de la carte
LCDWIKI_KBV lcd(ILI9341,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset
Dans le bloc setup, nous initialisons la carte
void setup() {
  // Initialisaton de la carte
  lcd.Init_LCD();
Ensuite nous définissons le sens de l'écran (Portrait). Par défaut c'est la valeur 0.
// mode protrait
lcd.Set_Rotation(1);
C)-dessous les différentes orientations d'affichage.
Stacks Image 970138
On continue par le remplissage du fond en noir. 0x000 correspond au code couleur noir en hexa. Il est fortement conseillé de définir des constantes pour plus de clarté.
// affichage du fond noir
lcd.Fill_Screen(0x0000);  
On termine par l'affichage du texte : la taille, la couleur du texte et sa taille. La fonction Print_String comporte la chaîne à afficher et la position x et y du texte sur l'écran (voir image ci-dessus). La fonction setup est terminée.
  // affichage du texte en jaune
  lcd.Set_Text_colour(0xFFE0);
  // paramétrage de la taille
  lcd.Set_Text_Size(2);
  // affichage Hello World
  lcd.Print_String("Hello World !",10,20);
}
Nous laissons la boucle loop telle quelle. Envoyons le programme sur l'Arduino, voici le résultat avec un Arduino Méga.
Stacks Image 970143

4 Sonde de température

Il est temps de créer un vrai montage avec une sonde de température. Nous afficherons la température et l'hygrométrie. Le montage sera hypersimple avec une sonde DHT11. On branchera la sonde sur le 5 v de l'Arduino Méga et la sortie de la sonde sur le pin 45.
Stacks Image 970150
Voici le code. J'ai rajouté quelques codes couleurs pour la clarté du programme.
#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library
#include "DHT.h" //bibliothèque sonde

//définition de la carte
LCDWIKI_KBV lcd(ILI9341,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset

#define DHTPIN 45 // Digital pin connected to the DHT sensor

#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

                             /*  r     g    b */
#define BLACK        0x0000  /*   0,   0,   0 */
#define BLUE         0x001F  /*   0,   0, 255 */
#define RED          0xF800  /* 255,   0,   0 */
#define GREEN        0x07E0  /*   0, 255,   0 */
#define CYAN         0x07FF  /*   0, 255, 255 */
#define MAGENTA      0xF81F  /* 255,   0, 255 */
#define YELLOW       0xFFE0  /* 255, 255,   0 */
#define WHITE        0xFFFF  /* 255, 255, 255 */
#define NAVY         0x000F  /*   0,   0, 128 */
#define DARKGREEN    0x03E0  /*   0, 128,   0 */
#define DARKCYAN     0x03EF  /*   0, 128, 128 */
#define MAROON       0x7800  /* 128,   0,   0 */
#define PURPLE       0x780F  /* 128,   0, 128 */
#define OLIVE        0x7BE0  /* 128, 128,   0 */
#define LIGHTGREY    0xC618  /* 192, 192, 192 */
#define DARKGREY     0x7BEF  /* 128, 128, 128 */
#define ORANGE       0xFD20  /* 255, 165,   0 */
#define GREENYELLOW  0xAFE5  /* 173, 255,  47 */
#define PINK         0xF81F  /* 255,   0, 255 */

// Initialize DHT sensor.
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  //initialisation sonde température
  pinMode(DHTPIN, INPUT);
  dht.begin();

  // Initialisaton de la carte
  lcd.Init_LCD();
  // rotation de l'écran 
  lcd.Set_Rotation(1);
  // affichage du fond noir
  lcd.Fill_Screen(BLACK);  
  // affichage du texte en jaune
  lcd.Set_Text_colour(YELLOW);
  // affichage du fond du texte en noir
  lcd.Set_Text_Back_colour(BLACK);
  // paramétrage de la taille
  lcd.Set_Text_Size(2);
  // affichage Titre
  lcd.Print_String("Sonde temperature",10,20);
}

void loop() {
  // on attend 2 secondes pour la prise de mesure
  delay(2000);
  // Lecture de la sonde
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // affichage du texte en blanc
  lcd.Set_Text_colour(WHITE);

  // affichage température
  lcd.Print_String("Temp :"+String(t),10,40);
  // affichage hygrométrique
  lcd.Print_String("Hygro :"+String(h),10,60);
    
}
Et voici le résultat
Stacks Image 970011
Nous finirons par une petite démo (exemple show_bmp_picture) d'affichage d'images stockées sur une carte microSDRam. Pour info, je n'ai pas réussi à la faire fonctionner sur l'Arduino Méga, il ne reconnaît pas le lecteur de carte.
00:00  /  00:00
comments powered by Disqus