Ecran I2C 128x64 fonctionne mal

Salut tout le monde,
J'aimerais installer sur ma Xiaomi M365 un écran pour afficher les infos de route et pour cela je suis les instructions de cette page : GitHub - augisbud/m365_dashboard: Xiaomi M365 Display V0.2
J'ai donc reçu tous les composants pour cette réalisation (sauf l'arduino pro micro mais j'ai une UNO OFFICIEL pour faire les tests). J'ai donc brancher mon écran I2C comme indiqué sur plusieurs tuto mais un seul programme fais afficher des infos à l'écran sinon rien du tout et il n'est même pas détécter par un scanner I2C.
Voici le seul programme qui affiche des trucs à l'écran sinon rien

// Simple I2C test for ebay 128x64 oled.
// Use smaller faster AvrI2c class in place of Wire.
// Edit AVRI2C_FASTMODE in SSD1306Ascii.h to change the default I2C frequency.
//
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"

// 0X3C+SA0 - 0x3C or 0x3D
#define I2C_ADDRESS 0x3C

// Define proper RST_PIN if required.
#define RST_PIN -1

SSD1306AsciiAvrI2c oled;
//------------------------------------------------------------------------------
void setup() {

#if RST_PIN >= 0
  oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN);
#else // RST_PIN >= 0
  oled.begin(&Adafruit128x64, I2C_ADDRESS);
#endif // RST_PIN >= 0
  // Call oled.setI2cClock(frequency) to change from the default frequency.

  oled.setFont(Adafruit5x7);

  uint32_t m = micros();
  oled.clear();
  oled.println("Hello world!");
  oled.println("A long line may be truncated");
  oled.println();
  oled.set2X();
  oled.println("2X demo");
  oled.set1X();
  oled.print("\nmicros: ");
  oled.print(micros() - m);
}
//------------------------------------------------------------------------------
void loop() {
  
  }

J'espère que vous pourrez me donner une solution à mon problème
Cordialement
VINOUZE Pierre-Yves

mais un seul programme fais afficher des infos à l'écran sinon rien du tout et il n'est même pas détécter par un scanner I2C.

Ceci est très contradictoire. Si c'est bien un écran I2C et qu'il fonctionne avec ce programme, il doit forcément être détecté par un scanner I2C.

Et quels sont les autres programmes qui ne fonctionnent pas ?
Il peut s'agir de logiciels écrits pour des SSD1306 SPI.

@+

Merci et voici le lien de l'écran : https://www.ebay.fr/itm/0-96-I2C-SPI-Serial-128X64-OLED-LCD-LED-Display-Module-for-Arduino-TE711/372427849468?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

Pour les autres programmes j'ai essayés plusieurs programmes de tests et auyres programmes fournis par les bibliothèques de l'écran et le programme pour la trotinette électrique ne fonctionne pas alors qu'il devrait afficher un menu.
Cordialement

Quelle bibliothèque ?
Quels exemples ?

Un lien suffira.

Voici les 3 sites pour les bibliothèques et exemples :
Site 1
Site 2
Site 3

La librairie ADAFRUIT est configurée comme ceci :

   #define SSD1306_128_32

Ton écran est un 128x64.

Sur le moniteur série (si tu l'as ouvert), tu devrais voir apparaître un message :

Height incorrect, please fix Adafruit_SSD1306.h!

Adafruit_SSD1306.h est situé dans le répertoire libraries\Adafruit_SSD1306 de ton install ARDUINO.

Tout est dit dans les liens :
lien 2 : Utiliser La Librairie Adafruit_SSD1306 Et Adafruit_GFX
lien 3 : Modifying the SSD1306 Driver

@+

Jai déja modifié la librairie et jai lis en commentaire l'écran en 128x32 et j'ai enlevé le commentaire de celui en 128x64

mis*

Essaie les exemples de la librairie ADAFRUIT dans un premier temps.
Seulement ceux dont le nom ne se termine pas par SPI.

@+

déjà essayé mais ne fonctionne pas
je comprends pas pourquoi ça ne fonctionne pas

Si c'est bien un écran I2C, il doit forcément être détecté par un scanner I2C.

Vérifie ce point.

@+

J'ai vérifié sur internet et la référence de mon écran est TE711 est c'est un écran I2C mais il n'est pas détecté par le programme.

Tu as bien connecté comme ceci ?

Il y a plein d'autres tutos sur le net. Voici un exemple de code qui utilise la bilbi ADafruit_GFX : tu peux ajouter tes lignes d'affichage de texte pour voir si cela fonctionne.

/*-------------------------------------------------------------------------------------
 * Template file for 4-pin I2C OLED display, e.g. from Geekcreit
 * using Adafruit SSD1306 driver and GFX libraries.
 * Tutorial:
 * https://startingelectronics.org/tutorials/arduino/modules/OLED-128x64-I2C-display/
 *-------------------------------------------------------------------------------------*/
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>

// OLED display TWI address
#define OLED_ADDR   0x3C

// reset pin not used on 4-pin OLED module
Adafruit_SSD1306 display(-1);  // -1 = no reset pin

// 128 x 64 pixel display
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void setup() {
  // initialize and clear display
  display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
  display.clearDisplay();
  display.display();

  
}

void loop() {
  // put your main code here, to run repeatedly:

}

J'ai réalisé comme c'est indiqué et sur le seul code qui fonctionne j'ai rajouté des lignes et ça marche alors je ne sais plus quoi faire.
Merci quand même pour le temps que vous me consacrez.

pierre44:
J'ai réalisé comme c'est indiqué et sur le seul code qui fonctionne j'ai rajouté des lignes et ça marche alors je ne sais plus quoi faire.

Pas de découragement : qu'appelles-tu le "seul code qui fonctionne" ?

Celui du premier post c'est le seul qui affiche quelque chose sur l'écran je peux rajouter du texte si je veux mais ça ne met d'aucune utilité car jen ai besoin pour ma trotinette électronique.

Curieux ...... le code qui fonctionne n'utilise pas la librairie wire, et tout ce qui l'utilise( scanner inclus) ne fonctionne pas.

Il y a peut être un soucis avec la librairie wire en place...elle donne en général de bons résultats

Effectivement c'est curieux mais le code pour la trotinette utilise les librairies Watchdogs, SSD1306Ascii, SSD1306AsciiWire et SSD1306AsciiSpi

Dans SSD1306AsciiWire.h il y a bien :

#include <Wire.h>

Mais dans SSD1306AsciiAvrI2c.h le code travaille directement avec les registres TWBR, TWCR, TWDR & TWSR

Un indice ?

@+

Que sont les registres que vous avez cités précédemment je suis un peu perdu ?