Pb de coordonées pixels dans écran OLED

Bonjour à tous,

C'est l'hiver et quoi de mieux que de s'essayer à la manipulation d'écran OLED pour un petit projet perso...

Je ne me démonte pas, je commande des tous petits OLED sur AE, munis d'une puce SSD1306, car elle me semblait assez répandu.

J'utilise la bibliothèque recommandée, et j'arrive à faire des trucs avec l'écran, mais, il y a un mais.
L'affichage est complétement fucked.

En dépit d'une initialisation "setCursor" à 0, mon texte est à cheval sur les bordures de l'écran. Si je change les valeurs de "setCursor", le texte bouge, mais rien ne semble logique.
En plus de ça, invariablement à ce que je fais j'ai un champs de pixels randoms sur la droite de l'écran (environ 40% de la surface) à vue de pif, qui ne disparait que pendant le "oled.clearDisplay".

Alors mon idée fut de dessiner uniquement 4 pixels, aux 4 coins de l'écran.
Seuls 2 apparaissent, et pas du tout à la bonne place.

Vous allez me dire que c'est un problème de résolution, je ne pense pas, car en changeant la résolution déclarée de quelques pixels (en plus ou en moins), l'écran ne réagit plus du tout ; il réagit uniquement quand la "bonne" résolution est déclarée (72x40).

PS: j'ai 4 écrans, les 4 réagissent pareil.

Voici mon code de test :

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 oled(72,40,&Wire,-1);

void setup() 
{
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
oled.clearDisplay(); // clear display
oled.display();
delay(3000);
}

void loop()
{
oled.setCursor(0,0);
oled.drawPixel(1,1, WHITE);
oled.drawPixel(1,71, WHITE);
oled.drawPixel(39,1, WHITE);
oled.drawPixel(39,71, WHITE);
oled.display();
}

Merci aux âmes charitables qui pourraient m'expliquer où je me suis viandé.

Bonsoir alex_vrc

Il semblerai que tu aies croisé les coordonnées X et Y.
Si ton écran fait 72/40, tu ne peut pas avoir > 39 comme 2ème argument.

Cordialement
jpbbricole

Bonsoir,

oui bonne remarque, j'ai copier coller le code que j'étais en train de trifouiller, à la base c'était dans l'autre sens, j'ai essayé les 2 sens au cas où...

Des news,
manifestement le problème est connu. Je trouve des traces sur GITHUB de gens qui se plaignent d'un décalage de 28 pixels en X, et un Y splitté en 3, mais pas de réponses concrètes.

Voici des news de mon problème :rage:
alors en fait, l'écran n'est pas le bon, je me suis fait mystifié par le vendeur... :partying_face:

La puce de gestion est bien une SSD1306, câblée n'importe comment.
Mon écran a son pixel 1 relié à la sortie 28 de la puce (en horizontal), d'où l'offset.
Ensuite, l'écran ne fait pas 42 pixels de haut comme prévu, mais 20 !! d'où le repliement à la con.
en déclarant un écran de 101x20, puis une rotation de 180° (instruction "setRotation"), ça fonctionne. :grinning:

Problème résolu. :pray: