St7920 lcd 128*64

Bonjour, actuellement j'utilise une arduino zero avec un écran lcd ST7920 communication SPI, mon écran et correctement câblé l'allumage de l'écran s’effectue mais aucun affichage de hello world.

#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif


U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* CS=*/ 10, /* reset=*/ 8);

void setup(void) {
  u8g2.begin();
}

void loop(void) {
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB14_tr);
  u8g2.firstPage();
  do {
    u8g2.setCursor(0, 40);
    u8g2.print(F("Hello World!"));
  } while ( u8g2.nextPage() );
  delay(1000);
}


Bonjour flafvien

Comme je n'ai pas de Zero pour essayer, j'ai demandé à l'IA, essaies son programme :wink:

#include <Arduino.h>
#include <U8g2lib.h>

// Initialisation de l'écran en mode SPI avec la bibliothèque U8g2
U8G2_ST7920_128X64_F_SW_SPI u8g2(
    /* clock=*/ 13,  /* data=*/ 11, /* cs=*/ 9, /* reset=*/ 7);

void setup() {
  // Initialisation de la communication avec l'écran
  u8g2.begin();
}

void loop() {
  // Dessiner "Hello World"
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_ncenB08_tr); // Choisir une police
    u8g2.drawStr(0, 24, "Hello World"); // Dessiner le texte
  } while (u8g2.nextPage());

  delay(1000); // Pause pour éviter les redessins trop rapides
}

Cordialement
jpbbricole```

Si tu utilises ces broches
/* clock=/ 13, / data=/ 11, / CS=*/ 10,

Il vaut mieux créer une instance de
U8G2_ST7920_128X64_1_HW_SPI

A noter, l'Arduino Zero s'interface en 3.3V. Ton afficheur a bien une interface 3.3V?

il manque le premier argument qui devrait être la rotation

L'arduino zero s'interface en 3,3volt l'écran est alimenté en 5volt sur le vcc par l'arduino et la blk en 3,3volt
avec U8G2_ST7920_128X64_1_HW_SPI u8g2(U8G2_R0, /* CS=/ 10, / reset=*/ 8); cela ne fonctionne pas non plus.

#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif


U8G2_ST7920_128X64_1_HW_SPI u8g2(U8G2_R0, /* CS=*/ 10, /* reset=*/ 8);

void setup(void) {
  u8g2.begin();
}

void loop(void) {
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB14_tr);
  u8g2.firstPage();
  do {
    u8g2.setCursor(0, 40);
    u8g2.print(F("Hello World!"));
  } while ( u8g2.nextPage() );
  delay(1000);
}

On voit mal les fils sur la photo.
La broche PSB est bien à GND?

Pas très logique.
Le driver ST7920 fonctionne de 2.7 à 5.5V. Donc en principe pas de problème.
Mais, le niveau logique haut est défini par rapport à VDD,
A savoir 0.7 * VDD ≤ VIH ≤ VDD
Donc:

  • si le ST7920 est alimenté en 5V le niveau haut doit être supérieur à 3.5V pour être reconnu comme tel.
  • si le ST7920 est alimenté en 3.3V le niveau haut doit être supérieur à 2.3V pour être reconnu comme tel.

Dans le premier cas, comme la Zero est en interface 3.3V, il est fort probable que ça ne va pas fonctionner, ou alors ça va tomber en marche de temps en temps et planter le reste du temps.
Tout ça pour dire que c'est une mauvaise configuration.

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