É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.