problème de communication avec un écran 4D systèmes

Bonjour,

Je suis débutant en programmation et je n’ai pas beaucoup de connaissance dans le domaine.
Mon problème me parait pas compliqué mais après plusieurs heures de recherche je n’ai pu le résoudre.

Mon objectif est simplement d’interagir avec un écran oled avec arduino (écrire des trucs sur l’écran)
Je dispose d’une arduino uno et d’un écran uoled 128 G2 de 4D système, j’utilise aussi un shield 4D système pour lier les 2.

Tout se fais par le biais des ports séries et je pense que c’est de là que vient mon problème.
Au début j’utilisais les pin 0 et 1 mais je pense que ça a crée un conflit puisque la connexion USB utilise déja le port pour le hardware.
J’ai donc décidé d’utiliser les ports soft (2 et 3)mais là non plus l’écran n’affichais rien.

P.S. : sur les pin 0 et 1 j’avais un retour moniteur de ce que j’écrivais contrairement à apres sur les pin 2 et 3.

le code

#define DisplaySerial Serial

#include "Goldelox_Serial_4DLib.h"
#include "Goldelox_Const4D.h"


#include <SoftwareSerial.h>
#define DisplaySerial SoftwareSerial
SoftwareSerial DisplaySerial(3,2);
   

Goldelox_Serial_4DLib Display(&DisplaySerial);


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


delay (5000); 

  Display.gfx_ScreenMode(LANDSCAPE);
  Display.SSTimeout(0) ;
  Display.SSSpeed(0) ;
  Display.SSMode(0) ;
  
  //Display.gfx_BGcolour(WHITE) ;
  Display.gfx_Cls();          

//Display.gfx_Rectangle(1,1,128,64,0x256);
}


void loop() {

  Display.print("test");
   delay(1000);


}

Merci d’avance

il faut enlever #define DisplaySerial Serial du début du code et mettre

#include <SoftwareSerial.h>
SoftwareSerial DisplaySerial (3,2); // rxPin, txPin
#include "Goldelox_Serial_4DLib.h"
#include "Goldelox_Const4D.h"

pour que DisplaySerial soit l’instance représentant le port série

attention de brancher les pins 2 et 3 dans le bon sens

pin 3 => la pin sur laquelle on reçoit, donc à connecter au Tx de l’écran
pin 2 => la pin sur laquelle on émet, donc à connecter au Rx de l’écran

s’assurer de la compatibilité 5V bien sûr aussi et il faut que l’écran soit configuré bien sûr aussi à 9600 bauds

bonjour,

tu peux te contenter de débrancher ton LCD pendant que tu téléverses ton programme, ce sont les 1ères trames entre le PC et l'Arduino après le reset et les réponses du goldelox qui foutent la m...e, mais une fois programmé ton µC ne communique plus qu'avec le LCD

5_cylindres: tu peux te contenter de débrancher ton LCD pendant que tu téléverses ton programme

Oui c'est une option aussi en production.

il ne faut pas avoir à la fois la console série ouverte ET l'écran connecté cependant, donc pas l'idéal s'il veut faire du debug

en prod, il vaut mieux prendre le port série matériel capendant, ce sera plus robuste (et vous pourriez passer à un débit en Baud bien plus élevé ce qui va fluidifier l'affichage)

Merci pour vos réponses rapides mais aucunes des solutions ne fonctionnent

5_cylindres: tu peux te contenter de débrancher ton LCD pendant que tu téléverses ton programme,

J'avais déjà essayé sans succes

J-M-L: il faut enlever #define DisplaySerial Serial du début du code

Oui c'est une erreur quand j'ai copié mais je l'avais bien enlevé.

Il n'y a pas de problème sur la compatibilité 5V et le shield adapte déjà les connexions avec les pin 2 et 3 donc le problème ne vient pas de là non plus.

vous avez essayé avec

#include <SoftwareSerial.h>
SoftwareSerial DisplaySerial (3,2); // rxPin, txPin
#include "Goldelox_Serial_4DLib.h"
#include "Goldelox_Const4D.h"

Oui mais rien a changé je sais pas trop quoi faire de plus.

essayez avec un code minimaliste et postez le ici

C'est à dire ?

ztr_smash: C'est à dire ?

faites un programme qui affiche "Hello World" à l'écran et c'est tout

NB dans un des exemples ils font

//SoftwareSerial DisplaySerial(2,3) ; // pin 2 = TX of display, pin3 = RX

==> donc 2,3 et pas 3,2. Je ne connais pas votre shield mais vérifiez les jumpers et les connexions

j’ai essayé celui là sans succes

#include <SoftwareSerial.h>
SoftwareSerial DisplaySerial (3,2); // rxPin, txPin
#include "Goldelox_Serial_4DLib.h"
#include "Goldelox_Const4D.h"
//#define DisplaySerial Serial
Goldelox_Serial_4DLib Display(&DisplaySerial);

void setup()
{
//Serial.begin(9600);
DisplaySerial.begin(9600) ;
}


void loop() {
  Display.print("hello word");
   delay(1000);
}

Le shield redirige directement Tx vers le Pin 3 et Rx vers 2 (ou vers le 1 et le 0 si je met les jumpers pour le hardware) donc je peux pas inverser.
Le shield était vendu avec l’écran donc je pense que ça devrai être dans ce sens.

il y a semble t'il suivant cette doc (page 5) 2 jumpers J3 et J4 a positionner correctement

J3 permet aux signaux série de l'écran d'être reçus sur D0 (Arduino Rx) ou D2 J4 permet au signal série à l'écran d'être transmis depuis les broches D1 (Arduino Tx) ou D3 de l'Arduino.

donc il faut faire un

 SoftwareSerial DisplaySerial(2,3) ;

et pas (3,2)

dans les exemples ils envoie aussi un reset() à l'écran

est-ce que l'écran est en autobaud ?

Je n'arrive pas a faire le reset, il n'est pas dans les bibliothèques apparemment.

Sinon comment savoir s'il est en autobaud ou pas ?

J'ai ça dans la doc "Asynchronous hardware serial port, TTL interface, with 300 baud to 600K baud."

est-ce qu'un exemple de la bibliothèque fonctionne ?

Où est ce que je peux les trouver ?

Je peux pas travailler dessus le week end mais je suis preneur si vous avez d’éventuelles propositions quant à la source du problème et la manière pour le résoudre.

Par ailleurs, Je vous remercie d'avoir pris du temps pour m'aider.

ztr_smash: Où est ce que je peux les trouver ?

là où vous avez téléchargé la bibliothèque ou dans le menu Fichier / Exemples / le nom de votre bibliothèque

si c'est cette bibliothèque que vous avez prise, elle est livrée avec deux exemples

ça date d'il y a 7 ans cependant, donc à voir si les fonctions de bases de l'IDE n'ont pas évoluées entre temps...