Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=signup Les demandes d'inscription sont révisées quotidiennement.

Menu principal

RP2040-LCD-0.96 driver écran ST7735s

Démarré par statis, Mars 29, 2025, 07:32:57 PM

« précédent - suivant »

statis

Bonjour à toutes et tous

J'ai fais l'acquisition d'un RP2040-LCD-0.96
L'idée paraissait bonne d'après de le descriptif mais une fois reçu cela a été une déception.
Le vendeur avait son propre user guide mais avec des erreurs et un support de mauvaise qualité.
Mon premier problème a été suite à la mise en place du firmware micropython du vendeur.
L'essai avec le firmware générique proposé dans l'IDE Thonny n'a pas amélioré la situation, ni d'en injecter un venant directement de micropython.
J'ai donc déposé une requête auprès de WS pour pouvoir faire un factory reset car le vendeur ne savait pas.
WS m'a fourni le firmware usine ce qui m'a permis de vérifier que je n'avais pas cramé le circuit ainsi qu'un lien vers leur wiki avec la version micropython adaptée.
J'ai du les recontacter car leur exemple de gestion de l'écran était pour un externe, ils m'ont répondu de bien regarder sur leur wiki car il y avait effectivement un exemple en micropython.

Ne connaissant pas du tout micropython j'ai fait des recherches et j'ai trouvé une super vidéo d' Electro bidouilleur avec une bonne information, la possibilité d'orienter l'écran ce dont j'ai besoin dans mon projet.
La vidéo m'a permis de comprendre qu'il fallait que je trouve la bibliothèque py de l'écran.
Heureusement sur le wiki WS il y a la fiche technique du ST7735S.
Je n'ai trouvé que le py du ST7735 sans le S et une indication que pour le RP2040-LCD-0.96 il fallait juste modifier mais par rapport à celui du wiki il y a du "PIN" non référencé...
Le support WS recontacté m'a de nouveau donné le lien du wiki sans lire ma demande d'aide concernant l'orientation de l'écran...

le py de ws est WSpico-lcd-0.96-160x80+Example.py
le py du ST7735 est ST7735.py
avec un py pour les fontes sysfont.py
et l'exemple testST7735.py

Je pense que l'adaptation doit être trop compliquée et que je ferais mieux de commander un R2040 16 méga avec une écran externe qui lui a les bibliothèques, cela serait moins cher et mieux en capacité mémoire mais je n'aime pas abandonner sans avoir tout tenté.
Peut-être la modification est simple mais j'ai besoin d'aide dans ce cas

Merci d'avance

statis

J'ai fais beaucoup de recherches et après avoir récupéré quelques informations, un test me permet de dire que je suis en bonne voie.
J'ai réussi à afficher en horizontal et en vertical avec des modifications à l'exemple de la bibliothèque ST7735 qui n'est pas prévue pour le ST7735s qui équipe le RP2040-LCD-0.96 de chez WS lequel n'a pas la même taille ni les mêmes "pin's".
Pour l'instant le résultat est un affichage 1.8" tronqué sur du 0.96"...
Je mettrais à jour le sujet avec les différents lien et le fichiers py modifiés pour le 0.96" de WS.
J'espère à très bientôt  :smiley:

statis

mauvaise nouvelle...
Il n'y a pas qu'un tronquage du 1.8" mais la partie 0.96" l'est aussi ce qui rend pour l'instant l'écran non utilisable en totalité ce qui est inacceptable...
J'ai réouvert un ticket d'incident chez WS, j'y crois pas trop, on verra bien...

statis

WS a répondu que leurs ingénieurs verraient plus tard pour l'affichage en mode portrait...
Et si l'on regarde le lien suivant çà ne rassure pas sur leur sérieux
Meanwhile back to the RP2040-LCD-0.96
Le commentaire sur la partie SPI fait peur quand à l'histoire du rétro éclairage le code du wiki est peut-être inutile car lors de mes tests il est actif au démarrage. Ci dessous le lien du wiki WS
wiki WS
Les liens pour récupérer le py ST7735 d'origine et sysfont sont à l'intérieur de "portraitST7735M.py" mais je mettrais tout en fin de message.
Premier problème l'exemple ne donne pas la correspondance de
spi = SPI(1, baudrate=20000000, polarity=0, phase=0, sck=Pin(14), mosi=Pin(15), miso=Pin(12))
tft=TFT(spi,16,17,18) ???
Heureusement j'ai trouvé sur le site dont le lien est dessous
tft=TFT(spi
Quelque part il est dit que l'on peut modifier le py de ST7735 mais ce n'était pas possible pour moi d'arriver à ce qui suit
spi = SPI(1, baudrate=20000000, polarity=0, phase=0, sck=Pin(10), mosi=Pin(11), miso=None)
tft=TFT(spi,8,12,9) # DC 8 RST 12 CS 9
Restait le double problème d'écran et d'affichage tronqués...
Pour compenser cela j'ai du modifier le py ST7735 avec une taille d'écran ne correspondant pas à la réalité pour que rien ne soit tronqué :
ScreenSize = (160, 162) #ScreenSize = (128, 160)
Ainsi que la partie BMP du py portraitST775M :
            if w > 162: w = 162 #if w > 128: w = 128
            if h > 162: h = 162 #if h > 160: h = 160
Par contre l'image BMP de l'exemple est tronquée car je n'ai pas trouvé comment positionner "l'origine" qui par le ST7735 positionne le premier pixel à 26,1 le dernier pixel étant à 105,160
Pour les images je vais donc devoir faire un masque à 128 / 160 et intégrer la partie 80 / 160 que je veux afficher à la position adéquate...
Autre problème, au départ l'écran était en fond blanc alors qu'il aurait du être noir et rien dans l'exemple montrait comment faire mais en testant :
tft.invertcolor(TFT.INVON)
cela n'a pas été suffisant car il y avait aussi un problème avec les couleurs corrigé avec :
tft.rgb(False) # essayer False si mauvaises couleurs modifié car mauvaises couleurs avec True
Je ne vais pas travailler en mode paysage donc je n'ai pas fait d'essais sur ce point, en portrait cela fonctionne USB en haut tft.rotation(0) aussi bien qu'en bas tft.rotation(2)
Dernier point le retro éclairage restait actif ce qui me dérange  pour mon projet, j'ai joué sur la pin 25 sans utiliser de PWM en l'activant en début même si ce n'était pas nécessaire car seul un reset pouvait le réactiver suite à une désactivation ce qui dérange l'IDE Tnonny.
Autre chose, l'exemple le montre désactiver le retro éclairage n'efface pas l'écran ce qui ne me plait pas car cela laisse des pixels en action même si on ne les voit pas donc effaçage mis en place
Tout cela est bien compliqué.
Les fichiers py fonctionnels (...)

statis

Waveshare va mettre à jour son wiki avec une nouvelle démo intégrant la disposition de l'écran dans toutes les orientations
pas encore de forme de base autres que les lignes ni de chargement de l'image mais c'est déjà çà
fichier py ci-dessous

statis

Le wiki de waveshare a été mis à jour https://www.waveshare.com/wiki/RP2040-LCD-0.96
mais pour accéder au fichier py il faudra chercher tout en bas "DEMO" mais vous l'avez déjà au-dessus
Ils vont encore travailler dessus et j'espère qu'ils penseront bien à tout ce qui peut être demandé à un écran
En ce qui concerne le driver ST7735 (écran qui équipe cette board) j'ai découvert un défaut, qui même en modifiant comme je l'ai fait dans le py mis plus haut, empêche l'affichage correct d'une variable
La seule commande qu'accepte micro-python est str() mais avec
tft.text((27, 26), str(Fire_on) , TFT.GREEN, sysfont, 2)
On obtient juste autant de carrés que de digit dans la valeur "Fire_on"
Avec le py de shareware la valeur de "Fire_on" s'affiche correctement
C'est quand même fou de penser que d'un côté le concepteur ai intégré un écran à sa board sans avoir vérifié qu'un driver adapté soit disponible pour les clients visés (obligatoirement des particuliers car au niveau industriel ils font leurs propres boards)  et de l'autre que les "génies" de l'open source ne testent pas à fond leurs scripts...