SquareLine Studio et l’écran WAVESHARE ESP32-S3 Touch LCD 7

Cette page fait suite à l’introduction sur l’écran WAVESHARE ESP32-S3 Touch LCD 7. La compréhension de cette introduction est un prérequis pour ce qui suit.


SquareLine Studio est un outil de conception d’interface utilisateur (UI) multiplateforme, conçu pour aider les concepteurs et les développeurs à travailler rapidement et efficacement. Il permet de créer des interfaces utilisateur attrayantes et fonctionnelles pour des appareils embarqués, en utilisant la bibliothèque graphique LVGL (Light and Versatile Graphics Library)


TUTORIELS

Get started | Basics Tutorial #1 | SquareLine Studio

How to make a GUI for ESP32 7 inch Display from Waveshare with Squareline Studio and LVGL ( installez le board « waveshare 7inch Dev Board » )


PREMIER CROQUIS AVEC SQUARELINE STUDIO

Répertoire et fichiers de travail

Créer un répertoire de travail

Copier « 09_lvgl_Porting » dans ce répertoire de travail

Renommer le dossier « 09_lvgl_Porting » du répertoire « Travail » pour « Hello_World_00 »

Renommer le fichier « 09_lvgl_Porting.ino » du répertoire « Hello_World_00 » pour « Hello_World_00.ino »

Ajouter un nouveau dossier nommé « src »

Créer un nouveau dossier « Hello_World_SLS » dans le répertoire de travail

Création d’une interface utilisateur avec SquareLine Studio

Création UI Hello World (vidéo)

Installer la version « lgvl 8.3.11 « dans la librairie

Suite à l’installation, aller dans le dossier «…/librairies/lgvl »

Copier le fichier « lv_conf_template.h » dans le répertoire « librairies »

Renommer la copie « lv_conf.h »

Important : Modifier la ligne 15, changer le 0 pour 1

Ajouter le fichier qui suit dans le répertoire « Hello_World_00 » et nommer le « ui.h »

/**
 * @file ui.h
 *
 */

#ifndef UI_OUTER_H
#define UI_OUTER_H

#ifdef __cplusplus
extern "C" {
#endif

/*********************
 *      INCLUDES
 *********************/
#include "src/ui.h"

/*********************
 *      DEFINES
 *********************/

/**********************
 *      TYPEDEFS
 **********************/

/**********************
 * GLOBAL PROTOTYPES
 **********************/

/**********************
 *      MACROS
 **********************/

#ifdef __cplusplus
} /*extern "C"*/
#endif

#endif /*UI_OUTER_H*/

Ouvrir le fichier « Hello_World_00.ino » avec l’IDE Arduino

Modifier la ligne 20, ajouter

Ajouter « #include « ui.h » . à la ligne 8, mettre en commentaire la ligne 21

Mettre en commentaire la ligne 91 ( // lv_example_animing_1(); )

Ajouter à la ligne 92 ( ui_init(); )

Enregistrer les modifications

Débrancher et rebrancher le « Waveshare ESP32-S3-Touch-LCD-7 » du port USB de l’ordinateur. Maintenir le bouton BOOT enfoncé pendant la connexion du câble USB à l’ordinateur.

Sélectionner la carte « Waveshare ESP32-S3-Touch-LCD-7 » et le port COM adéquat

Faire les sélections ci-dessous

Téléverser le programme dans le « Waveshare ESP32-S3-Touch-LCD-7 »

Retirer le câble USB de l’ordinateur et le rebrancher. L’application démarre.

Le « Waveshare ESP32-S3-Touch-LCD-7 » affiche « Hello World ! »


CHANGEMENT DE STYLE DE CARACTÈRE

Dans le fichier lv_conf.h, mettre un 1 à ligne qui correspond à la grosseur de caractère employé dans votre projet.

IMPORTANT: Pour le même fichier, s’assurer que la condition soit réglée à 1 à la ligne 15 « if 1 /Set it to « 1 » to enable content/ »

Changement dans le fichier lv_conf.h (vidéo)

Changement à faire dans le projet avec Squareline Studio (vidéo)


DÉMO : ACTIVATION D’UN LED À PARTIR D’UN BOUTON SUR ÉCRAN

L’objectif est d’allumer ou éteindre le led par l’entremise d’un bouton à l’écran. Pour ce faire, le circuit résistance-led est relié sur le port « Sensor AD », broches 3V3-GND-AD. La broche « AD » est contrôlée par le GPIO6. Une résistance de 240 ohms est employée.

Création des fichiers de départ

Copier « 09_lvgl_Porting » dans le répertoire de travail

Renommer le dossier « 09_lvgl_Porting » du répertoire « Travail » pour « allum_led_LCD_7_buttonCtrl_01 »

Renommer le fichier « 09_lvgl_Porting.ino » du répertoire « allum_led_LCD_7_buttonCtrl_01 » pour « allum_led_LCD_7_buttonCtrl_01.ino »

Dans le répertoire « allum_led_LCD_7_buttonCtrl_01 », ajouter un nouveau dossier nommé « src »

Ajouter le fichier qui suit dans le répertoire « allum_led_LCD_7_buttonCtrl_01 » et nommer le « ui.h »

/**
 * @file ui.h
 *
 */

#ifndef UI_OUTER_H
#define UI_OUTER_H

#ifdef __cplusplus
extern "C" {
#endif

/*********************
 *      INCLUDES
 *********************/
#include "src/ui.h"

/*********************
 *      DEFINES
 *********************/

/**********************
 *      TYPEDEFS
 **********************/

/**********************
 * GLOBAL PROTOTYPES
 **********************/

/**********************
 *      MACROS
 **********************/

#ifdef __cplusplus
} /*extern "C"*/
#endif

#endif /*UI_OUTER_H*/

Créer un nouveau dossier « allumLed_LCD_7_1_spj » dans le répertoire de travail

Création de l’interface utilisateur avec SquareLine Studio

Configuration de l’écran avec Squareline Studio (vidéo)

Suite à la configuration, la fonction désirée doit être ajoutée au fichier « ui_events.c » du répertoire « Travail\allum_led_LCD_7_buttonCtrl_01\src »

// This file was generated by SquareLine Studio
// SquareLine Studio version: SquareLine Studio 1.5.0
// LVGL version: 8.3.11
// Project name: allumLed_LCD_7_1

#include "ui.h"

void my_button_event_handler(lv_event_t * e)
{
	// Your code here
	const char * etat = lv_label_get_text(ui_lblStatusLed);
	if (strcmp(etat, "LED OFF") == 0){   // etat = "LED OFF"
		lv_label_set_text(ui_lblStatusLed, "LED ON");	
    }
    else{
	    lv_label_set_text(ui_lblStatusLed, "LED OFF");
	}
}

Ouvrir le fichier « allum_led_LCD_7_buttonCtrl_01.ino » avec l’IDE Arduino

  • Ajouter « #define GPIO_CRTL_LED 6 » à la ligne 15
  • Ajouter « pinMode(GPIO_CRTL_LED, OUTPUT); » à la ligne 27, puis appuyer sur « ENTER »
  • Ajouter « digitalWrite(GPIO_CRTL_LED, LOW); » à la ligne 28
  • Ajouter « #include « ui.h » » à la ligne 8
  • Mettre en commentaire la ligne 7 ( // #include <demos/lv_demos.h> )
  • Mettre en commentaire la ligne 97 ( // lv_demo_widgets(); )
  • Ajouter à la ligne 101 ( ui_init(); )
  • Remplacer la boucle LOOP par ce qui suit :
void loop()
{
    const char * etatLabel = lv_label_get_text(ui_lblStatusLed);

    if (strcmp(etatLabel, "LED OFF") == 0){
      digitalWrite(GPIO_CRTL_LED, LOW);
      lv_obj_set_style_text_color(ui_lblStatusLed, lv_color_hex(0x0000FF), LV_PART_MAIN | LV_STATE_DEFAULT); // Bleu
    }
    else{
      digitalWrite(GPIO_CRTL_LED, HIGH);
      lv_obj_set_style_text_color(ui_lblStatusLed, lv_color_hex(0xFF0000), LV_PART_MAIN | LV_STATE_DEFAULT); // Rouge
    }

}

Débrancher et rebrancher le « Waveshare ESP32-S3-Touch-LCD-7 » du port USB de l’ordinateur. Maintenir le bouton BOOT enfoncé pendant la connexion du câble USB à l’ordinateur.

Sélectionner la carte « Waveshare ESP32-S3-Touch-LCD-7 » et le port COM adéquat

Faire les sélections ci-dessous

Téléverser le programme dans le « Waveshare ESP32-S3-Touch-LCD-7 »

Retirer le câble USB de l’ordinateur et le rebrancher. L’application démarre.

Le « Waveshare ESP32-S3-Touch-LCD-7 » affiche en bleu « LED OFF»

Appuyer sur le bouton à l’écran

  • Le « Waveshare ESP32-S3-Touch-LCD-7 » affiche en rouge « LED ON»
  • Le LED s’allume

Appuyer sur le bouton à l’écran

  • Le « Waveshare ESP32-S3-Touch-LCD-7 » affiche « LED OFF»
  • Le LED s’éteint