Arduino nano et écran TFT 1,3 po 240x240 ST7789

J'ai programmé mon Arduino Nano et mon écran, tout fonctionne bien quand le câble USB est connecté à mon iMac. Si je connecte mon Arduino sur un autre PC ou à une source USB, je n'ai pas d'affichage sur l'écran. L'écran est bien allumé Parfois, si je presse le bouton "reset" de l'arduino nano, je vois les données s'afficher sur l'écran tant que je tiens le bouton enfoncé.

Avez-vous des idées?

Bonjour et bienvenue,
Merci de lire et d'appliquer "Les bonnes pratiques du forum Francophone"
En particulier donner le code utilisé, on est pas devin :wink:

1 Like

Voici mon code:

#include <Arduino.h>
#include <Adafruit_GFX.h> // graphics library
#include <Adafruit_ST7789.h> // library for this display
#include <SPI.h>

#define TFT_CS 10 // if your display has CS pin
#define TFT_RST 8 // reset pin
#define TFT_DC 9 // data pin

Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

float Temp_frigoD;
float Temp_frigoG;
float Temp_Fan;


void setup() {

  tft.init(240, 240, SPI_MODE2); 
  tft.setRotation(1); // rotates the screen
  tft.fillScreen(ST77XX_BLACK); // fills the screen with black colour
  tft.setCursor(10, 10); // starts to write text at y10 x10
  tft.setTextColor(ST77XX_WHITE); // text colour to white you can use hex codes like 0xDAB420 too
  tft.setTextSize(3); // sets font size
  tft.setTextWrap(true);
  tft.print("FRIGO");
  tft.setCursor(10, 200); // starts to write text at y10 x10
  tft.print("FAN");

  tft.setTextColor(ST77XX_RED);
  tft.setTextSize(5); // sets font size
  tft.setCursor(10, 50); // starts to write text at y10 x10
  tft.print("G");
  tft.setCursor(10, 120); // starts to write text at y10 x10
  tft.print("D");

  tft.setTextColor(ST77XX_BLUE);
  tft.setTextSize(5); // sets font size
  tft.setCursor(70, 50); // starts to write text at y10 x10
  tft.print("88,8");
  tft.setCursor(70, 120); // starts to write text at y10 x10
  tft.print("88,8");

  tft.setTextSize(3); // sets font size
  tft.setTextColor(ST77XX_RED);
  tft.setCursor(80, 200); // starts to write text at y10 x10
  tft.print("OFF");

  Temp_frigoD = 8.24;
  Temp_frigoG = 7.9;
  Temp_Fan = 18.9245;

}

void write_Display(){
  tft.fillScreen(ST77XX_BLACK); // fills the screen with black colour
  tft.setCursor(10, 10); // starts to write text at y10 x10
  tft.setTextColor(ST77XX_WHITE); // text colour to white you can use hex codes like 0xDAB420 too
  tft.setTextSize(3); // sets font size
  tft.setTextWrap(true);
  tft.print("FRIGO");
  tft.setCursor(10, 200); // starts to write text at y10 x10
  tft.print("FAN");

  tft.setTextColor(ST77XX_RED);
  tft.setTextSize(5); // sets font size
  tft.setCursor(10, 50); // starts to write text at y10 x10
  tft.print("G");
  tft.setCursor(10, 120); // starts to write text at y10 x10
  tft.print("D");

  tft.setTextSize(3); // sets font size
  tft.setTextColor(ST77XX_RED);
  tft.setCursor(80, 200); // starts to write text at y10 x10
  tft.print("OFF");

}

void write_Temp(float T_D, float T_G, float T_F) {
  char buff[10];

  tft.fillRect(70, 50, 130, 40, ST77XX_BLACK);
  tft.setTextColor(ST77XX_BLUE);
  tft.setTextSize(5); // sets font size
  tft.setCursor(70, 50); 
  dtostrf(T_D, 4, 1, buff);
  tft.print(buff);

  tft.fillRect(70, 120, 130, 40, ST77XX_BLACK);
  tft.setCursor(70, 120); 
  dtostrf(T_G, 4, 1, buff);
  tft.print(buff);

  tft.fillRect(150, 200, 80, 21, ST77XX_BLACK);
  tft.setTextSize(3); // sets font size
  tft.setCursor(150, 200); 
  dtostrf(T_F, 4, 1, buff);
  tft.print(buff);
}

void loop() {
  


  delay(1000);
 
  Temp_frigoD = Temp_frigoD + 0.01;
  Temp_Fan = Temp_Fan + 0.1;

 // write_Display();
  write_Temp(Temp_frigoD, Temp_frigoG, Temp_Fan);

  } 

Ah, c'est pas bien, tu n'as pas suivi le lien que j'ai donné dans mon précédent message et ton code est mal présenté. :frowning:

Pas facile à faire sur un iPhone, ça va pas mal sur mon Mac.

Je ne vois pas très bien. Le bouton RESET bloque le CPU donc il ne devrait rien se passer.

Tu pourrais nous faire un petit schéma de ton montage (à main levé sur un papier + photo est suffisant).

Et le CPU est alors empéché de rafraîchir l'écran (ex: si on programme un Arduino gréé d'un afficheur graphique, tout le temps où l'Arduino se fait programmer, l'afficheur -qui a son propre contrôleur avec sa propre mémoire) garde les horreurs qui traînent sur l'écran)

-> le défaut serait dû au fait que l'Arduino efface trop souvent/trop vite l'écran, et ne prend pas le temps d'afficher.

Ça ressemble beaucoup au temps de rafraichissement trop rapide, ce qui explique quand je pèse sur le bouton reset, je vois apparaître correctement l'écran. Mais ça n'explique pas pourquoi que ça fonctionne bien quand je suis branché sur mon MAC et rien sur une autre source PC ou adapteur.

Je me suis aperçu que c'est encore plus compliqué.
Quand je compile avec VSCode et PlateformIO avec

[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
lib_deps = 
    adafruit/Adafruit GFX Library@^1.11.5
    adafruit ST7735 and ST7789 Library
    SPI

ça fonctionne. Si je compile avec Arduino_IDE avec comme carte Arduino Nano, la carte: nanoatmega328 (Oldbootloader) et programmeur Arduino as ISP ou Arduino AVR ISP, ça ne fonctionne pas.

Alors, je suis perdu!

Bonjour
au vu du truc j'ai pas vérifié plus loin
il semblerait que ce soit un afficheur i2C et sur nano c'est A4 A5 le bus i2c si je fais pas d'erreur.
PS vérifier aussi que l'afficheur c'est bien du 3.3V en alim.
si c'est le cas le nano sort 5V sur les E/S .. pas good pas good

mort de rire le bout de notice sur alie ..

Générateur d'ozone d'éo Adaptateur ymbol Description

1 Générateur d'ozone Rond G

2 Générateur d'ozone Power 3.3V

3 Générateur d'ozone Goupille d'horloge matérielle.

4 Générateur d'ozone Saisie de données matérielles

5 Générateur d'ozone Goupille eset galvanisée d'alliage d'aluminium

Vérifiez que sa broche est entrée de signal de réinitialisation. Wlorsque la broche est basse, l'initialisation de la puce est

Exécuté. Maintenez eep cette goupille tirer haut pendant le fonctionnement normal.

6 Générateur d'ozone Onata/Command onontrol

7 Générateur d'ozone Sélection des épaules de hanche réglables

8 Générateur d'ozone Goupille de contrôle imperméable

a priori on retrouve souvent ce cablage

donc ce que j'ai dis plus haut semble obsolète et ou faux

sauf que

les entrées ne supportant que 3.3 v

une adaptation étonnante avec résistances série .. je m'attendais a un pont diviseur.

Voila qui est mieux

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