TFT LCD lent , trouver un ecran plus rapide dans la vitesse des valeurs ...leque

bonjour,

apres avoir creer une programmation
arduino mega r3
shield grove mega
deux capteur TF MINI PLUS
ecran elegoo 28" ILI9341 ELEGOO UNO R3 2,8 Pouces écran Tactile TFT Touch Screen 320x240

l'affichage se fait bien sur la premiere mesure et est tres precis car travail en serie materiel UART1 UART2 .
Mais des que je bouge les capteurs pour une nouvelle mesure , les valeurs mettent entre 10 et 15 secondes à s'afficher. (je suis en serial begin 115200 ainsi que le seriel 1 et serial 2 à 115200).

Certes à 16 euros , je pouvais pas m'attendre à un fou de guerre mais la , c'est abuser alors qu'avec mon ancien ecran "Afficheur LCD I2C Grove 114990502" sparkfun , la valeur est instantanée.

merci de m'indiquer les meilleurs ecrans pour une résolution optimale sur les données valeurs de capteurs ou simplement un debug que j'aurais oublié de programmer .

merci de vos retour.

Il ne faut pas effacer l'écran à chaque fois.
Il faut positionner le curseur et réécrire les valeurs par dessus les précédentes.

Sans voir le programme, difficile d'en dire plus...

lmbgael:
Certes à 16 euros , je pouvais pas m'attendre à un fou de guerre mais la , c'est abuser alors qu'avec mon ancien ecran "Afficheur LCD I2C Grove 114990502" sparkfun , la valeur est instantanée.

Bonjour,

Certes avec un afficheur texte, l'affichage est plus rapide qu'avec un afficheur graphique, mais 10 à 15 secondes pour afficher, ça parait quand même beaucoup. Il y a sans doute un problème autre part.
Comme l'a dit le sept, mets ton code.

10 secondes est le temps d'effacement d'un ILI9341 avec un ARDUINO.

C’est vraiment bizarre! Chez moi ça prend 218 ms (sur une mega).

Cela doit dépendre de la librairie.
J’utilise Adafruit_ILI9341

Moi j’utilise la librairie SPFD5408 de Joao Lopes.
La différence me parait énorme. Tu as bien un afficheur avec une interface parallèle?

Non, c'est un SPI.

Moi j'ai celui ci qui a une interface parallèle et qui semble être le même que celui cité par lmbgael. C'est pourquoi je m'étonnais que le délai de 10 ou 15 s puisse venir de l'affichage.

Quand lmbgael répondra aux questions ... on en saura un peu plus.

Bonjour, bonjour,

Désolé jsui en déplacement, je m'arrête ce midi et je répond à vos questions, merci de vos réactions. Déjà dans un premier temps Oui j'utilise direct la librairie de elegoo fourni, une mega avec shield Mega grove et l'écran est en brochage direct sur le shield grove Mega.
La LIBRAIRIE elegoo intègre ILI 9341.
Oui j'ai l'impression que c'est la librairie qui n'es-tu pas optimum par rapport à ma demande. J'ai fait un test, j'ai intégré un delayMixroseconds (200) dans le bloc calcul de la distance des capteurs, ça va un mieux mais ça bug par moment, ça doit pas être la bonne solution mais ça me confirme que c'est l'écran, ou tel paramètre des librairie qui n'est pas assez rapide.

Je vous mets le code dès que je peux sans l'intégration des fameux delayMixroseconds.

Bonjour, bonjour,

Désolé jsui en déplacement, je m'arrête ce midi et je répond à vos questions, merci de vos réactions. Déjà dans un premier temps Oui j'utilise direct la librairie de elegoo fourni, une mega avec shield Mega grove et l'écran est en brochage direct sur le shield grove Mega.
La LIBRAIRIE elegoo intègre ILI 9341.
Oui j'ai l'impression que c'est la librairie qui n'es-tu pas optimum par rapport à ma demande. J'ai fait un test, j'ai intégré un delayMixroseconds (200) dans le bloc calcul de la distance des capteurs, ça va un mieux mais ça bug par moment, ça doit pas être la bonne solution mais ça me confirme que c'est l'écran, ou tel paramètre des librairie qui n'est pas assez rapide.

Je vous mets le code dès que je peux sans l'intégration des fameux delayMixroseconds.

<
#include <Wire.h>

#include <SoftwareSerial.h>
#define SoftwareSerial Serial1 
#define RX = 19
#define TX = 18
#define SoftwareSerial Serial2
#define RX = 17
#define TX = 16

#include <TouchScreen.h>
#include <Elegoo_TFTLCD.h>
#include <pin_magic.h>
#include <registers.h>
#include <Elegoo_GFX.h>
/* For Arduinoboards with multiple serial ports like DUEboard, interpret above two pieces of code and
directly use Serial1 serial port*/

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

// Assign human-readable names to some common 16-bit color values:
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF

#define YP A3 // must be an analog pin, use "An" notation!
#define XM A2 // must be an analog pin, use "An" notation!
#define YM 9 // can be a digital pin
#define XP 8 // can be a digital pin

//Touch For New ILI9341 TP
#define TS_MINX 124
#define TS_MAXX 924
#define TS_MINY 150
#define TS_MAXY 900

// We have a status line for like, is FONA working
#define STATUS_X 10
#define STATUS_Y 65

Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// Elegoo_TFTLCD tft;

boolean buttonEnabled = true;

// capteur Bas

int dist1 =0;//actual distance measurements of LiDAR
int strength1;//signal strength of LiDAR
int check1;//save check value
int i1;
int uart1[9];//save data measured by LiDAR
const int HEADER=0x59;//frame header of data package

// capteur haut

int dist2 = 0;//actual distance measurements of LiDAR
int strength2;//signal strength of LiDAR
int check2;//save check value
int i2;
int uart2[9];//save data measured by LiDAR
const int HEADER2=0x59;//frame header of data package

void setup()
{
Serial.begin(115200);
Serial1.begin(115200);
Serial2.begin(115200);

Serial.println(F("TFT LCD test"));

#ifdef USE_Elegoo_SHIELD_PINOUT
Serial.println(F("Using Elegoo 2.8\" TFT Arduino Shield Pinout"));
#else
Serial.println(F("Using Elegoo 2.8\" TFT Breakout Board Pinout"));
#endif

Serial.print("TFT size is "); Serial.print(tft.width()); Serial.print("x"); Serial.println(tft.height());

uint16_t identifier = tft.readID();
if(identifier == 0x9325) {
Serial.println(F("Found ILI9325 LCD driver"));
} else if(identifier == 0x9328) {
Serial.println(F("Found ILI9328 LCD driver"));
} else if(identifier == 0x4535) {
Serial.println(F("Found LGDP4535 LCD driver"));
}else if(identifier == 0x7575) {
Serial.println(F("Found HX8347G LCD driver"));
} else if(identifier == 0x9341) {
Serial.println(F("Found ILI9341 LCD driver"));
} else if(identifier == 0x8357) {
Serial.println(F("Found HX8357D LCD driver"));
} else if(identifier==0x0101)
{ 
identifier=0x9341;
Serial.println(F("Found 0x9341 LCD driver"));
}else {
Serial.print(F("Unknown LCD driver chip: "));
Serial.println(identifier, HEX);
Serial.println(F("If using the Elegoo 2.8\" TFT Arduino shield, the line:"));
Serial.println(F(" #define USE_Elegoo_SHIELD_PINOUT"));
Serial.println(F("should appear in the library header (Elegoo_TFT.h)."));
Serial.println(F("If using the breakout board, it should NOT be #defined!"));
Serial.println(F("Also if using the breakout, double-check that all wiring"));
Serial.println(F("matches the tutorial."));
identifier=0x9341;

}

tft.reset();
tft.begin(identifier);
tft.setRotation(0); 
tft.fillScreen(BLACK);

// page principale
tft.drawRect(0,0,240,320,CYAN);
tft.setCursor(10,10);
tft.setTextSize(3);
tft.setTextColor(CYAN);
tft.print("LASER ");

tft.setCursor(50,50);
tft.setTextSize(2);
tft.setTextColor(RED);
tft.print("By lm");

tft.fillRect(15,180,200,40, RED);
tft.drawRect(15,180,200,40, CYAN);
tft.setCursor(30, 190);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print(" MESURES");
delay(500);

tft.fillScreen(BLACK);

TSPoint p = ts.getPoint();

if (p.z > ts.pressureThreshhold) {

p.x = map(p.x, TS_MAXX, TS_MINX, 0, 320);
p.y = map(p.y, TS_MAXY, TS_MINY, 0, 240);

delay(10);
}
pinMode(XM, OUTPUT);
pinMode(YP, OUTPUT);
} 

void loop()
{

// capteur bas

unsigned long D=0;

tft.setCursor(60, 20);
tft.setTextColor(WHITE, BLACK);
tft.setTextSize(2);
tft.print("Dist1 = ");
tft.setCursor(60, 40);
tft.print((dist1)/100.00);
tft.print('\t');

if (Serial1.available())//check if serial port has data input
{
if(Serial1.read()==HEADER)//assess data package frame header 0x59
{
uart1[0]=HEADER;
if(Serial1.read()==HEADER)//assess data package frame header 0x59
{
uart1[1]=HEADER;
for(i1=2;i1<9;i1++)//save data in array
{
uart1[i1]=Serial1.read();
}
check1=uart1[0]+uart1[1]+uart1[2]+uart1[3]+uart1[4]+uart1[5]+uart1[6]+uart1[7];
if(uart1[8]==(check1&0xff))//verify the received data as per protocol
{
dist1=uart1[2]+uart1[3]*256;//calculate distance value
strength1=uart1[4]+uart1[5]*256;//calculate signal strength value

}
}
}
}
delay(50);
D +=dist1;

// capteur haut

tft.setCursor(60, 60);
tft.setTextColor(WHITE, BLACK);
tft.setTextSize(2);
tft.print("Dist2 = ");
tft.setCursor(60, 80);
tft.print((dist2)/100.00,2);
tft.print('\t');

if (Serial2.available())//check if serial port has data input
{
if(Serial2.read()==HEADER2)//assess data package frame header 0x59
{
uart2[0]=HEADER2;
if(Serial2.read()==HEADER2)//assess data package frame header 0x59
{
uart2[1]=HEADER2;
for(i2=2;i2<9;i2++)//save data in array
{
uart2[i2]=Serial2.read();
}
check2=uart2[0]+uart2[1]+uart2[2]+uart2[3]+uart2[4]+uart2[5]+uart2[6]+uart2[7];
if(uart2[8]==(check2&0xff))//verify the received data as per protocol
{
dist2=uart2[2]+uart2[3]*256;//calculate distance value
strength2=uart2[4]+uart2[5]*256;//calculate signal strength value

}
}
}
}

delay(50);
D += dist2;

// Distance Total

tft.setCursor(60,120);
tft.setTextColor(WHITE, BLACK);
tft.print("DT:");
tft.setTextSize(3);
tft.setCursor(60,160);
tft.print((D)/100.00);
delay(50);

}

A lire d'urgence https://forum.arduino.cc/index.php?topic=315372.0

Où se trouve cette bibliothèque Elegoo_TFTLCD.h ? Impossible de mettre la main dessus sur Internet...

@lesept, bonsoir,

la bibliotheque est livré sur un CD avec l'ecran

pour information , en enlevant tous les delay() , j'obtiens une mesure qui varie entre 4 et 8 secondes selon les hauteurs( et non plus entre 10 et 15)....mais malheureusement ce n'est pas franchement encore bon , je voudrais de l'instantané à 1 ou 2 seconde.
alors dois je garder cet ecran et changer toutes les bibiolitheque ?...telle est la questions....

site elegoo ou tu peut telecharger les librairie

C'est soit un problème d'affichage très lent donc de bibliothèque, mais j'en doute, soit un problème de communication. Pour vérifier, tu peux simplement commenter toutes les lignes liées à l'afficheur et voir si c'est plus rapide.

C'est un "dérivé" des librairies Adafruit. Elles sont généralement de bonne qualité.
Est-ce que les exemples de code livrés avec la librairie fonctionnent correctement?