Coup de pouce Adafruit

Bonsoir les gens :slight_smile:

J’ai besoin d’un coup de pouce. J’ai un oled 128x32 que vous m’avez deja aidé à utiliser. Mais là j’avoue que je ne comprend pas le langage adafruit.
J’ai utilisé le script demo qu’on trouve sur le net.
j’ai voulu l’épurer pour le comprendre et isoler simplement la methode d’afficahge de test et là je ne comprends pas.

Voilà où j’en suis

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);


void setup()   {                
  Serial.begin(9600);

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3c (for the 128x32)
}

void loop() {
  
  display.display();
  display.clearDisplay();

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("TEST !");
 
  delay(2000);
  display.clearDisplay();
 }

Je n’ai que l’icone Adafuit qui apparait, puis disparait avec le clear, mais ensuite il n’y a rien.
Si j’enleve le display.display() il ne se passe plus rien sur l’oled.

Pour utiliser cette bibliothèque, il faut savoir que ça marche en deux temps. D'abord, tu prépares l'affichage : tu positionnes et traces les textes, les dessins, etc. Lorsque tout est prêt, il te reste à lancer l'affichage : c'est le rôle de la méthode display. Donc celle-ci doit venir à la fin, lorsque tu as préparé ton affichage. Le delay doit venir ensuite.

Donc pour ton code, tu dois déplacer le display.display après le println, et ôter le clearDisplay de la fin qui est redondant de celui du début.

OK
Merci pour l'information, c'est plus clair.

Comment faire pour le plus avoir le logo adafruit au debut ? merci

Il faut modifier le fichier Adafruit_SSD1306.cpp de la librairie.
L'affichage du logo est réalisé dans la méthode begin().
Au début de begin() il faut mettre cette partie en commentaire:

  if(HEIGHT > 32) {

    drawBitmap((WIDTH - splash1_width) / 2, (HEIGHT - splash1_height) / 2,

      splash1_data, splash1_width, splash1_height, 1);

  } else {

    drawBitmap((WIDTH - splash2_width) / 2, (HEIGHT - splash2_height) / 2,

      splash2_data, splash2_width, splash2_height, 1);

  }

Tu peux aussi modifier le fichier splash.h pour y mettre ton propre logo si tu le veux

Nickel

Merci pour la formation :wink: