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.
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é.
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 😂
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.
De plus aucune information sur la carte me permettait de trouver le fabricant de cette carte.
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.
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.
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.
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.
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.
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.
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
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