Dans un précédent article j’ai décrit la mise en oeuvre de LittlevGL sur un écran de chez Adafruit. Nous allons passer à la vitesse supérieur avec un écran tactile capacitif de 4 pouces de haute qualité en 800×600 de chez Pimoroni.
Installation de l’écran pimoroni HyperPixel 4
Tout d’abord les liens nécessaires à cette mise en oeuvre:
- l’achat peut se faire sur https://shop.pimoroni.com/products/hyperpixel-4?variant=12569539706963
- le dépot GitHub : https://github.com/pimoroni/hyperpixel4
On suppose que vous avez un raspberryPi OS lite d’installé sur une carte SD : ce qui veut dire pas d’interface graphique ! Tout est configuré (passage en francais, compilateur c++, git, ssh, etc..). Vous pouvez donc lancer l’installation de l’écran comme décrit sur GitHub:
1 |
curl -sSL https://get.pimoroni.com/hyperpixel4 | bash |
Redémarrez pour appliquer les changements. C’est fini pour l’écran.
Installation de LittlevGL
On va partir d’une configuration pour l’écran tactile officiel de la raspberryPi puis la modifier. On clone donc le dépot suivant:
1 |
git clone https://github.com/helioz2000/lvgl_demo.git |
Cela va créer un nouveau répertoire lvgl_demo . Rentrez dans celui-ci (cd lvgl_demo/
) puis éditez le fichier lv_conf.h (nano lv_conf.h
). modifiez les lignes en début de code comme suit puis sauvez-le :
1 2 3 |
#define LV_HOR_RES_MAX (480) #define LV_VER_RES_MAX (800) #define LV_COLOR_DEPTH 16 |
Éditez maintenant le fichier lvgl/lv_drv_conf.h (nano lvgl/lv_drv_conf.h
) puis modifiez les lignes suivantes :
Première adaptation : /dev/input/event6. Il faut se reporter au précédent article pour trouver le bon numéro pour la dalle capacitive et éventuellement créer une règle udev.
L’autre adaptation est sur les lignes EV_DEV_CALIBRATE qui passe à 1, EV_DEV_HOR_MAX et EV_DEV_VER_MAX dont les chiffres viennent de la lecture d’événements avec evemu-record lorsque je touche successivement les quatre coins de l’écran.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/*------------------------------------------------- * Mouse or touchpad as evdev interface (for Linux based systems) *------------------------------------------------*/ #ifndef USE_EVDEV # define USE_EVDEV 1 #endif #if USE_EVDEV # define EVDEV_NAME "/dev/input/event6" /*You can use the "evtest" Linux tool to get the list of devices and test them*/ # define EVDEV_SWAP_AXES 0 /*Swap the x and y axes of the touchscreen*/ # define EVDEV_CALIBRATE 1 /*Scale and offset the touchscreen coordinates by using maximum and minimum values for each axis*/ # if EVDEV_CALIBRATE # define EVDEV_HOR_MIN 0 /*to invert axis swap EVDEV_XXX_MIN by EVDEV_XXX_MAX*/ # define EVDEV_HOR_MAX 800 /*"evtest" Linux tool can help to get the correct calibraion values>*/ # define EVDEV_VER_MIN 0 # define EVDEV_VER_MAX 475 # endif /*EVDEV_CALIBRATE*/ #endif /*USE_EVDEV*/ |
Vous sauvez les modifications puis vous allez enfin pouvoir compiler le premier projet avec littlevGL en tapant tout simplement la commande make
. Vous pouvez lancer l’exécutable par ./demo
puis testez l’interface graphique.
Pour nettoyer le projet, faire un make clean
. Vous pouvez modifier le fichier demo.c comme base d’un nouveau travail.
Bon test à tous…