Écran/Pixel bloqué

Après de multiple recherches, je n'ai pas trouvé de solution à mon problème. Je m'explique, j'ai téléchargé un code sur Internet me permettant d'allumer un écran OLED 128*64 et depuis celui est bloqué. Je peux continuer de téléverser mes codes, mais il y a toujours une grosse partie de l'écran qui reste figé.

Photo de mon problème.

Voici le code que j'utilise actuellement.

#define SSD1306_128_64

#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(-1);

void setup()
{
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.setTextColor(WHITE);
}

void loop()
{
  display.clearDisplay();
  printCentered("SSD1306 TUTO", 0, 1);
  displayLogo(0, 100);
  printLeft("LEFT JUSTIFIED", 20, 1);
  printRight("RIGHT JUSTIFIED", 30, 1);
  printValue(100, 50, 2);
  displayBatteryLevel(0, 0, 0);
  displayLogo(112, 0);
  display.display();
  delay(500);
}

void printLeft(const char *s, int y, int size)
{
  display.setTextSize(size);
  display.setCursor(0, y);
  display.print(s);
}

void printRight(const char *s, int y, int size)
{
  int16_t x1, y1;
  uint16_t w, h;

  display.setTextSize(size);
  display.getTextBounds(s, 0, 0, &x1, &y1, &w, &h);
  display.setCursor(display.width() - w, y);
  display.print(s);
}

void printCentered(const char *s, int y, int size)
{
  int16_t x1, y1;
  uint16_t w, h;

  display.setTextSize(size);
  display.getTextBounds(s, 0, 0, &x1, &y1, &w, &h);
  display.setCursor((display.width() - w) / 2, y);
  display.print(s);
}

void printValue(int value, int y, int size)
{
  char s[20];
  int16_t x1, y1;
  uint16_t w, h;

  sprintf(s, "VALUE: %d", value);
  display.getTextBounds(s, 0, 0, &x1, &y1, &w, &h);
  display.setTextSize(size);
  display.setCursor(0, y);
  display.print(s);
}

static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
  B00000001, B11000000,
  B00000001, B11000000,
  B00000011, B11100000,
  B11110011, B11100000,
  B11111110, B11111000,
  B01111110, B11111111,
  B00110011, B10011111,
  B00011111, B11111100,
  B00001101, B01110000,
  B00011011, B10100000,
  B00111111, B11100000,
  B00111111, B11110000,
  B01111100, B11110000,
  B01110000, B01110000,
  B00000000, B00110000
};

void displayLogo(int x, int y)
{
  display.drawBitmap(x, y,  logo16_glcd_bmp, 16, 16, WHITE);
}

void displayBatteryLevel(int batteryLevel, int x, int y)
{
  static bool flash = false;
  if (flash || batteryLevel > 10) {
    display.drawRect(x, y, 6, 16, WHITE);
    display.fillRect(x, y + ((16 - batteryLevel / 6)), 6, batteryLevel / 6, WHITE);
  }
  flash = !flash;
}

Merci

vous êtes sûr du type de votre écran ?
schéma du montage ?

Oui car la semaine dernière j'ai réalisé le même montage et l'écran affichait toutes les informations de mon code

Il me semble reconnaître mon code :

Depuis 2019 la librairie AdaFruit a évolué.
Avec les versions précédentes :

#define SSD1306_128_64
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(-1);

Avec la nouvelle version :

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET     -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

Oui c'est un code que j'ai récupérer sur Internet. Surement le tiens pour le coup :wink:

Le bon réflexe à avoir, est de toujours essayer un exemple de la librairie. Cela permet de valider le montage.

Pour le coup j'ai essayé avec un exemple de la librairie et j'ai bien le programme qui fonctionne mais j'ai toujours des pixels qui sont bloqués. (voir sur l'image).


bonsoir
Compte tenu des tests faits, çà ressemble beaucoup au symptôme soudure de la nappe défectueuse.
Faire une inspection(photos ?) visuelle minutieuse du ruban flexible vers le verso PCB

Pour faire simple :
Tu a testé et validé cet écran comme étant parfaitement fonctionnel ou c’était un autre écran ?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.