Affichage d'un Logo avec un écran Oled

Bonjour,
Je cherche à afficher le logo de l’image d’un satellite en première page d’un micro GPS sur un écran Oled 0.96 à l’aide du drivers qui fonctionne parfaitement avec le sketch GPS: <Adafruit_SSD1306.h>.
J’ai donc édité juste la partie “Logo” pour faire un essai et rien ne se passe. L’affichage test “Arduino” ne s’affiche pas et le reste non plus d’ailleurs.
Pouvez vous me dire ce qui bloque. J’ai trouvé cette méthode sur un autre sketch d’un GPS Oled (GPS Altimeter) mais qui utilise un drivers différent: <Adafruit_SSD1331.h>
Merci.

/*********************************************************************
  Essai Logo Oled
*********************************************************************/

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

#define OLED_RESET 5
Adafruit_SSD1306 display(OLED_RESET);


// Color definitions
#define BLACK           0x0000
#define BLUE            0x001F
#define RED             0xF800
#define GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0
#define WHITE           0xFFFF

static const unsigned char PROGMEM gpsIcon[] = {

  0x0, 0xe0, 0x0, 0x0,
  0x1, 0xf0, 0x0, 0x0,
  0x3, 0xf8, 0x0, 0x0,
  0x3, 0x98, 0x0, 0x0,
  0xe, 0x7, 0x0, 0x0,
  0xe, 0x7, 0x80, 0x0,
  0xe, 0x3, 0x80, 0x0,
  0x3, 0x81, 0xfc, 0x0,
  0x3, 0xc1, 0xfc, 0x0,
  0x1, 0xc1, 0xfe, 0x0,
  0x0, 0xf7, 0xfe, 0x0,
  0x0, 0x3f, 0xfc, 0x0,
  0x0, 0x3f, 0xfc, 0x0,
  0x0, 0x1f, 0xff, 0x80,
  0x0, 0x1f, 0xfb, 0x80,
  0xcc, 0x1f, 0xe1, 0xc0,
  0xce, 0x1f, 0xe0, 0x70,
  0xce, 0xf, 0xe0, 0x70,
  0x6e, 0x7, 0x60, 0x38,
  0x67, 0x0, 0x78, 0xc,
  0x63, 0x0, 0x1c, 0x1c,
  0x73, 0x80, 0x1c, 0x3c,
  0x71, 0xf0, 0x7, 0x70,
  0x30, 0xf8, 0x7, 0xf0,
  0x1c, 0x3e, 0x3, 0xc0,
  0xf, 0x0, 0x0, 0x80,
  0xf, 0x80, 0x0, 0x0,
  0x3, 0xf0, 0x0, 0x0,
  0x0, 0xfe, 0x0, 0x0,
  0x0, 0xe, 0x0, 0x0
};


void setup()
{
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();

  // Essai d'affichage de texte "classique" qui fonctionne sur le sketch GPS

  display.setTextSize(2);             //Taille du texte 2 (large)
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("ARDUINO");
  display.display();  // Pas d'affichage !!
  delay(4000);  // l'écran est noir et semble bloqué !!
  
  display.clearDisplay();

  // display.setRotation(2); // Rotation de l'écran
  printSplashScreen(); // Rien ne se passe !!
  delay(4000);
}


void loop ()
{
}

void printSplashScreen()
{
  display.drawBitmap(65, 0, gpsIcon, 30, 30, GREEN);
}

Le problème peut venir de plusieurs causes :

  • Adresse I2C incorrecte : as-tu utilisé un scanner I2C pour vérifier si 3C est la bonne adresse ?
  • Branchement incorrect : vérifie les branchements
  • Problème de code : teste avec un exemple avant de faire des modifications.

Essaye avec ce tuto (par exemple, il y en a bcp d'autres)

J'ai un code qui fonctionne dans le fichier GPS_Display.ino dans ce lien.

Quel modèle d'écran OLED utilisez-vous. Je ne savais pas qu'on puisse exploiter toutes ces couleurs.

Cordialement.

Pierre

Bonjour,

Supprimes la redéfinition des couleurs.
Ajoute display.display() après le drawbitmap();

/*********************************************************************
  Essai Logo Oled
*********************************************************************/

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

#define OLED_RESET 5
Adafruit_SSD1306 display(OLED_RESET);

static const unsigned char PROGMEM gpsIcon[] = {

  0x0, 0xe0, 0x0, 0x0,
  0x1, 0xf0, 0x0, 0x0,
  0x3, 0xf8, 0x0, 0x0,
  0x3, 0x98, 0x0, 0x0,
  0xe, 0x7, 0x0, 0x0,
  0xe, 0x7, 0x80, 0x0,
  0xe, 0x3, 0x80, 0x0,
  0x3, 0x81, 0xfc, 0x0,
  0x3, 0xc1, 0xfc, 0x0,
  0x1, 0xc1, 0xfe, 0x0,
  0x0, 0xf7, 0xfe, 0x0,
  0x0, 0x3f, 0xfc, 0x0,
  0x0, 0x3f, 0xfc, 0x0,
  0x0, 0x1f, 0xff, 0x80,
  0x0, 0x1f, 0xfb, 0x80,
  0xcc, 0x1f, 0xe1, 0xc0,
  0xce, 0x1f, 0xe0, 0x70,
  0xce, 0xf, 0xe0, 0x70,
  0x6e, 0x7, 0x60, 0x38,
  0x67, 0x0, 0x78, 0xc,
  0x63, 0x0, 0x1c, 0x1c,
  0x73, 0x80, 0x1c, 0x3c,
  0x71, 0xf0, 0x7, 0x70,
  0x30, 0xf8, 0x7, 0xf0,
  0x1c, 0x3e, 0x3, 0xc0,
  0xf, 0x0, 0x0, 0x80,
  0xf, 0x80, 0x0, 0x0,
  0x3, 0xf0, 0x0, 0x0,
  0x0, 0xfe, 0x0, 0x0,
  0x0, 0xe, 0x0, 0x0
};


void setup()
{
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();

  // Essai d'affichage de texte "classique" qui fonctionne sur le sketch GPS

  display.setTextSize(2);             //Taille du texte 2 (large)
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("ARDUINO");
  display.display();  // Pas d'affichage !!
  delay(4000);  // l'écran est noir et semble bloqué !!
  
  display.clearDisplay();

  // display.setRotation(2); // Rotation de l'écran
  printSplashScreen(); // Rien ne se passe !!
  delay(4000);
}


void loop ()
{
}

void printSplashScreen()
{
  display.drawBitmap(65, 0, gpsIcon, 30, 30, WHITE);
  display.display();
}

Merci Kamill,
C'est parfait et cela fonctionne. J'avais remarqué que la définition des couleurs bloquait le processus.
Pourquoi ce display.display(); c'est un ordre d'affichage à posteriori spécifique à ce driver d'écran ?
Éventuellement, peux tu m'expliquer comment "fabriquer" ou "reconstituer" ce gpsIcon

Pour Chpr l'écran que j'utilise est ci-dessous

http://www.dx.com/p/produino-0-96-i2c-iic-spi-serial-128x64-yellow-blue-oled-lcd-led-display-module-for-arduino-507216

J'ai jeté un œil sur votre lien et je vais y retourner pour étudier cela de plus près.

Pour Lesept tout est correct et l'adresse de l'écran est bien celle là. Il fonctionnait parfaitement pour l'affichage des données du GPS.

Merci à vous pour cette aide précieuse.
Christian

Dans le lien que j’ai mis, il y a un programme pour créer des icones

chris4775:
Pourquoi ce display.display(); c'est un ordre d'affichage à posteriori spécifique à ce driver d'écran ?

C'est l'ordre de transfert du buffer d'affichage vers l'écran.
Ca à l'avantage de faire des transitions propres.
Ca a l'inconvenient de consommer de la mémoire. Ce qui peut être une limite en cas d'arduino bas de gamme + affichage avec beaucoup de points.

chris4775:
... Éventuellement, peux tu m'expliquer comment "fabriquer" ou "reconstituer" ce gpsIcon ...

Pour créer des icons, il faut utiliser la petite application "LCDAssistant.exe" livrée avec la bibliothèque "Adafruit_SSD1306".

Cordialement.

Pierre

Bonjour,
Merci à tous pour cette aide efficace.
je vais me pencher sur les différentes options proposées.
Je pense que le sujet est clos.
[résolu]