Problème écran LCD tactile

Bonjour a tous,

J’essaye de faire fonctionner un écran LCD tactile. Pour le moment je ne suis pas encore attaqué mon projet, j'essaie juste de comprendre le fonctionnement au point de vue programmation. J'ai réussi à afficher du texte et à faire fonctionner un relais en interaction avec la parti tactile. J'ai raccordé sur l'arduino via un pont diviseur de tension une image de la tension de ma batterie de 12v, celle ci s'affiche bien au démarrage mais la tension finie par devenir illisible au fur et à mesure que celle ci change (les chiffres sont remplacé par des amas de pixels... De plus quand je clique sur l'un des deux boutons sur le pavé tactile, le relais s'enclenche bien mais rien ne s'affiche à l'écran (que je veuille introduire du texte ou une changement de couleur rien ne marche), je pense que celui-ci ne se rafraîchi pas.. Auriez vous une idée de pourquoi ? Je n'arrive pas à comprendre.

Cordialement

Pour afficher un texte qui change, il faut d'abord l'effacer : soit tu écris à la place des espaces, soit tu traces un rectangle de la couleur du fond. Ensuite tu écris le nouveau texte.

De plus quand je clique sur l'un des deux boutons sur le pavé tactile, le relais s'enclenche bien mais rien ne s'affiche à l'écran (que je veuille introduire du texte ou une changement de couleur rien ne marche)

Ça, ça dépend de ton code. Poste le ça nous aidera à t'aider. Le "pavé tactile", c'est une zone de ton écran où tu as dessine des boutons ?

Vos images:

Oui typique du soucis d’effacement avant de déssiner quelque part mais sans code difficile de vous aider. il faut ré-afficher votre fond vert sous les chiffres

Bonjour,
Merci pour vos réponse, voici le code que j'ai crée, il permet d'afficher la tension d'une batterie de 12volts via un pont diviseur de tension et l'intensité via un tores à effet hall. J'ai également dessiné deux carré (rouge & vert) afin de simuler deux interrupteurs qui enclenche un relais.

#include <Adafruit_GFX.h> // Core graphics library
//#include <Adafruit_TFTLCD.h> // Hardware-specific library
#include <TouchScreen.h>

#if defined(SAM3X8E)
#undef __FlashStringHelper::F(string_literal)
#define F(string_literal) string_literal
#endif

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

#define TS_MINY 75
#define TS_MAXY 930
#define TS_MINX 130
#define TS_MAXX 905

TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

// 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 BOXSIZE 40
#define PENRADIUS 2
int oldcolor, currentcolor;
int PinAnalogiqueBatterie=8;
int PinAnalogiqueIntensite=7;
int PinAnalogiqueValeurDeReference=9;
float batterie;
float lectBatterie;
float intensite;
float valeureDeReference;

#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;

void setup(void) {
Serial.begin(9600);
Serial.println(F("TFT LCD test"));
tft.reset();
uint16_t identifier = tft.readID();
pinMode(PinAnalogiqueBatterie, INPUT);
pinMode(PinAnalogiqueIntensite, INPUT);
pinMode(PinAnalogiqueValeurDeReference, INPUT);
pinMode(pompe, OUTPUT);

Serial.print(batterie);

tft.begin(identifier);

Serial.print("TFT size is "); Serial.print(tft.width()); Serial.print("x"); Serial.println(tft.height());
tft.fillScreen(BLACK);
tft.fillRect(300, 0, 25, 500, GREEN);

#define MINPRESSURE 10
#define MAXPRESSURE 1000
}
void loop(){

pinMode(XM, OUTPUT);
pinMode(YP, OUTPUT);

tft.setRotation(0); // Rotation de l'écran

tft.setRotation(1);
tft.setCursor(80, 0);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.print("Volts:");
tft.setCursor(250, 0);
tft.print("Intensite:");

lectBatterie = analogRead(PinAnalogiqueBatterie);
float valeurVolt = (lectBatterie5/1023);
batterie = (valeurVolt
14.4/4.8);
tft.setCursor(150, 0);
tft.print(batterie);
tft.print("V");

intensite = analogRead(PinAnalogiqueIntensite);
valeureDeReference = analogRead(PinAnalogiqueValeurDeReference);
float intensiteconvertie = (intensite - valeureDeReference);
float intensiteconverties = intensiteconvertie/8.525;
tft.setCursor(380, 0);
tft.print(intensiteconverties);
tft.print("A");

tft.fillRect(200, 60, 50, 50, GREEN);
tft.fillRect(200, 200, 50, 50, RED);
TSPoint p = ts.getPoint();

if (p.z > ts.pressureThreshhold) {
Serial.print("X = "); Serial.print(p.x);
Serial.print("\tY = "); Serial.print(p.y);
Serial.print("\tPressure = "); Serial.println(p.z);
}

if((p.x < 513 & p.x > 425) & (p.y < 388 & p.y > 254) & p.z > ts.pressureThreshhold){

digitalWrite(pompe, LOW);

}

if((p.x < 517 & p.x > 429) & (p.y < 744 & p.y > 623) & p.z > ts.pressureThreshhold){
digitalWrite(pompe, HIGH);
}
}

Cordialement,

Un test 'et' c'est && (pas &) :

  if((p.x < 513 && p.x > 425) && (p.y < 388 && p.y > 254) && p.z > ts.pressureThreshhold){

  if((p.x < 517 && p.x > 429) && (p.y < 744 && p.y > 623) && p.z > ts.pressureThreshhold){

Bonjour,

Mets ton code entre balises

Pour effacer le caractère du dessous il faut préciser la couleur du fond.
remplace

 tft.setTextColor(WHITE);

par

 tft.setTextColor(WHITE,GREEN);

Bonjour,

J'ai rajouté la commande "tft.setTextColor(WHITE,GREEN);" sur mes deux variables à afficher et sa fonctionne parfaitement. Merci beaucoup pour vos aides et votre réactivité !

Cordialement,