Ecran LCD 1.8" Joy-It !

Photographie ultra-rapide, pilotage d'imprimante 3D ou de CNC, fabrication de bière.... Enfin tout ce que le Raspberry peut gérer trouvera sa place dans cette rubrique

Modérateur : Francois

Répondre
Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Ecran LCD 1.8" Joy-It !

Message par Artemus24 » ven. 8 avr. 2022 17:39

Salut à tous.

Je possède un écran LCD 1.8" Joy-it. C'est petit !
J'ai testé dans ma Raspberry Pi 3B+ sous Buster.

Depuis que j'ai migré vers Bullseye, ainsi que sous ma Raspberry Pi 4B, je rencontre plusieurs problèmes que je ne sais pas comment résoudre.

Je ne me connecte pas en HDMI mais avec des fils de jonctions comme indiqué ci-après :

Code : Tout sélectionner

+=================+================+
| TFT 1.8" Joy-It |  Raspberry Pi  |
+------+----------+------+---------+
| PIN  |   NAME   | PIN  |   NAME  |
+======+==========+======+=========+
|  01  |   VCC    |  01  |   3V3   |
|  02  |   GND    |  06  |   GND   |
|  03  |   SCL    |  23  |   SCLK  |
|  04  |   SDA    |  19  |   MOSI  |
|  05  |  RS/DC   |  18  | GPIO 24 |
|  06  |  RESET   |  22  | GPIO 25 |
|  07  |    CS    |  24  |  CE0_N  |
+======+==========+======+=========+
Je ne possède pas le pilote natif de cet écran qui est "ST7735R".

Quand je démarre ma Raspberry Pi, j'obtiens bien l'affichage du bureau.
Comme l'écran est petit, je n'ai qu'un petit morceau du bureau.
Je vois la framboise, ainsi que le globe qui est celui du navigateur installé, la flèche de la souris et la corbeille.
J'ai installé "FBI" et je peux envoyer des images au format 128x160 sur mon écran.

Voici les problèmes que je rencontre :

a) A l'affichage, la framboise au lieu d'être rouge, elle est bleue.
Comment la modifier afin qu'elle retrouve sa véritable couleur ?

b) Je n'ai pas trouvé comment faire une rotation de 180° de l'affichage.
Les pins de l'afficheur sont plantés dans un breadbord où j'ai relié les fils à la Raspberry.

En cherchant sur le net, le paramétrage se met en fin de ligne dans le fichier "cmdline.txt".

Code : Tout sélectionner

fbcon=map:10 fbcon=rotation:2
"fbcon=map:10" semble fonctionne car si je ne le met pas, je n'ai aucun affichage.
Mais "fbcon=rotation:2" devrait me faire une rotation de 180°. Ca ne fonctionne pas.
Les valeurs permises vont de 0 jusqu'à 3. J'ai mis autre chose, ans succès.

c) à l'affichage , la dernière ligne et la dernière colonne contiennent que des pixels de couleurs.
Il me semble que je suis en dehors du format 128x160 pixels.
Autrement dit, la dernière ligne serait la 161 ième et la dernière colonne serait la 129 ième.
J'ai fait des testes avec le paramétrages du fichier "/config.txt", mais sans succès.
Cette dernière ligne et dernière colonne restent inchangées.

J'aimerai savoir si c'est possible de changer la couleurs de cette ligne et de cette colonne ?
Ou de faire en sorte qu'elle n'affiche plus des pixels de toutes les couleurs.

d) j'ai fait tous mes tests avec la RPi 3B+.
Or quand je passe sur la RPi 4B, cela ne fonctionne plus du tout.
C'est normal car je gère tout moi-même.
Le problème est que la gestion du GPIO se fait ainsi :
--> Raspberry Pi 3B+, adresse de base = 0x3F200000
--> Raspberry Pi 4B, adresse de base = 0xF2000000
sauf que je ne sais pas comment faire pour basculer de l'une à l'autre adresse de base en fonction du raspberry monté.

Cordialement.
Artemus24.
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

piper
Raspinaute
Messages : 656
Enregistré le : sam. 5 juin 2021 18:57

Re: Ecran LCD 1.8" Joy-It !

Message par piper » sam. 9 avr. 2022 18:44

Donc en gros, c'est ce que je lis entre les lignes parce que tu ne l'as pas dit explicitement :
Tu as développé toi-même le pilote en C ?
Et tu as un problème parce que l'adresse de base du GPIO n'est pas la même selon les Raspberry ?

Il y a plein de moyen de le savoir, le plus simple c'est :

Code : Tout sélectionner

cat /proc/cpuinfo | grep Model
Ex :
Model : Raspberry Pi 4 Model B Rev 1.4
Si tu peux lancer ça avant le chargement du pilote, tu pourras adapter l'adresse de base.
Par contre pour ta ligne de couleur étrange, je n'ai aucune idée de la raison.

J'ai ce type d'écran aussi, je n'ai jamais imaginé pouvoir lui faire afficher le bureau, je m'en sers pour afficher le statut des services, températures, %CPU et mémoire qui tournent sur mon raspberry avec du code en python à moi , je me contente de la base : une font simple, 4 couleurs, quelques effets graphiques tels que des rectangles et des cercles (puces) pour la présentation des données à afficher c'est tout

Ca n'a surement rien à voir mais par le passé, j'ai déjà eu des effets comme ce que tu décris lorsque qu'un moniteur 640x480 doit afficher un bureau en 800x600 : le pilote superposant toutes les lignes et colonnes extérieurs en une seule : la dernière
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Ecran LCD 1.8" Joy-It !

Message par Artemus24 » sam. 9 avr. 2022 20:22

Salut à tous.
Piper a écrit :Tu as développé toi-même le pilote en C ?
En gros, oui.
Piper a écrit :Et tu as un problème parce que l'adresse de base du GPIO n'est pas la même selon les Raspberry ?
Jusqu'à présent, oui.

J'ai résolu le problème de l'adresse GPIO_BASE.
Comme elle dépend du matériel Raspberry Pi utilisé, je ne peux pas la mettre en dure dans le programme 'C'.
Il existe une fonction 'C', que je ne connaissais pas, qui permet de la récupérer et de l'appliquer au programme 'C'.

Code : Tout sélectionner

#include <bcm_host.h>

unsigned int base;

base = bcm_host_get_peripheral_address() + 0x200000;
Ne pas oublier de mettre la bibliothèque lors de l'édition des liens :

Code : Tout sélectionner

-lbcm_host
Il n'est pas nécessaire de recompiler le programme si l'on change de raspberry pi.
J'ai testé et ça fonctionne parfaitement sur ma RPi 3B+.

Cela m'a permis de tester à nouveau mon programme 'C' de démonstration sur le TFT 1.8" de Joy-It.
J'ai créé une bibliothèque avec toutes les fonctions que j'utilise : Gpio, I2c, Spi, Pim, Led, Tft.
Il n'y a que le Gpio que je n'avais pas terminé de tester.

Sur les GPIO, je vais devoir approfondir mes testes car cela ne se résume pas à allumer et éteindre une led.
Piper a écrit :Par contre pour ta ligne de couleur étrange, je n'ai aucune idée de la raison.
Je pense que c'est un problème de calibrage. Je n'en sais pas plus.
Ce problème n'a aucun rapport avec le programme que j'ai écrit en 'C'.

Il s'agit de la console "FBCON" qui est utilisé pour afficher le bureau de la raspberry pi.
Comme je n'ai que 128x160 pixels, je ne vois presque rien du bureau.
Je ne l'ai pas acheté pour avoir un moniteur vidéo mais juste pour développer un pilote pour ce type d'écran.
Surtout faire mumuse avec ce genre d'écran.
Piper a écrit :je me contente de la base : une font simple, 4 couleurs, quelques effets graphiques tels que des rectangles et des cercles (puces) pour la présentation des données à afficher c'est tout
C'est basique ce que j'ai fait et je peux le compléter selon mes besoins :
--> un jeu de caractères à l'identique de la table ASCII.
--> un jeu de couleur que j'ai défini en constante.
--> Quelques fonctions comme le cercle, le rectangle ...
--> une gestion de fenêtre que j'imbrique.
Piper a écrit :Ca n'a surement rien à voir mais par le passé, j'ai déjà eu des effets comme ce que tu décris lorsque qu'un moniteur 640x480 doit afficher un bureau en 800x600 : le pilote superposant toutes les lignes et colonnes extérieurs en une seule : la dernière
Pour que la console puisse fonctionner, j'ai dû faire une recherche sur le net et développer le driver "st7735r.dts".

Jusqu'à présent, je faisais mes testes sur RPi 3B+.
J'ai changé de raspberry pi et je suis passé sur une RPi 4B / 8GB.
J'ai cette anomalie que je n'avais pas avant :

Code : Tout sélectionner

~> dmesg | grep fb
[    0.000000]   node   0: [mem 0x0000000040000000-0x00000000fbffffff]
[    0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=0 bcm2708_fb.fbheight=0 bcm2708_fb.fbswap=1 smsc95xx.macaddr=DC:A6:32:B8:17:2B vc_mem.mem_base=0x3eb00000 vc_mem.mem_size=0x3ff00000  console=tty1 root=PARTUUID=9cba179a-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash fbcon=map:10 fbcon=rotate:2
[    1.204652] bcm2708_fb soc:fb: Unable to determine number of FBs. Disabling driver.
[    1.204692] bcm2708_fb: probe of soc:fb failed with error -2
[   12.228282] st7735r spi0.0: [drm] fb0: st7735rdrmfb frame buffer device
~>
Dans la RPi 3B+, j'avais les deux périphériques "/dev/fb0" et "/dev/fb1".
Dans la RPi 4B, je n'ai plus que "/dev/fb0".

Aucune idée de comment résoudre ce problème.

Cordialement.
Artemus24.
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Répondre

Retourner vers « Les applications spécialisées du Raspberry Pi »