TFT SHIELD 3.5" ILI9486

Bonjour,
Je souhaite tracer la courbe de la pression atmosphérique issue d’un BMP 085 sur un écran shield 3.5" ILI9486.
J’ai connecté le BMP085 sur les entrées I2C de mon Arduino UNO.
J’ai connecté le shield directement sur le UNO.

Dès que je veux lire la valeur du BMP085, l’écran se réinitialise et devient tout blanc.

Comment faire ?

Est-ce impossible ?

Merci

#include <Adafruit_BMP085.h>
#include <Wire.h>
#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library

//if the IC model is known or the modules is unreadable,you can use this constructed function
LCDWIKI_KBV mylcd(ILI9486,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset
//if the IC model is not known and the modules is readable,you can use this constructed function
//LCDWIKI_KBV mylcd(320,480,A3,A2,A1,A0,A4);//width,height,cs,cd,wr,rd,reset
           
    
#define  BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Adafruit_BMP085 bmp;

    int i;
    float y;
    float val1=0;

 
void setup() 
{
    Serial.begin(9600);    //Initialise le BMP085
    if (!bmp.begin()) {
    Serial.println("Ne trouve pas le BMP085 sensor !");
    while (1) {}
}

  
    Serial.begin(9600);
     
    mylcd.Init_LCD();       //initialize lcd
    Serial.println(mylcd.Read_ID(), HEX);
    mylcd.Init_LCD();
    mylcd.Fill_Screen(0,0,255);   //display blue

     delay(1000);
}
void loop()
{
      val1 =(bmp.readPressure()); // acquisition de la pression
      y=float(val1);
      y=y/100;
      y=((y-1040)*5.3333)+320;    // Mise à l'échelle de l'écran 480X320 en mode paysage
      y=320-y;
      Serial.println(y);  //Controle sur le moniteur Série             
          mylcd.Set_Draw_color(255,0, 0); // Trace la mesure en rouge
             mylcd.Draw_Pixel(i,y);
               
                   
                   delay (5000);       // POUR UNE MESURE toutes les 5 secondes, 3600000 pour une mesure toutes les heures
}

LCDWIKI_KBV mylcd(ILI9486,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset

Avec ceci cela ne semble pas étonnant.
A4 étant le fil I2C SDA ... et A4 étant utilisé aussi pour le le RESET de l'écran :confused:

L'erreur est d'acheter un shield écran, avec des broches inamovibles.
Il est possible de s'en sortir en reliant UNO et écran avec des fils DUPONT, et relier le RESET écran à une broche autre que A4. Changer A4 aussi dans le code bien sûr.

Merci beaucoup, je pensai que les broches spécialisées SDA et SCL étaient drivées indépendamment des pins A4
et A5.
A quelle broche relier le reset écran ?
Le changement de code peut-il se faire en changeant le A4 en "x"

LCDWIKI_KBV mylcd(ILI9486,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset?

Ou dois-je attendre la carte Arduino Mega commandée il y déjà 3 semaines pour avoir un pin analogique supplémentaire ?

D'avance merci

ps : j'ai fait un baro avec affichage sur le PC de ma table à carte et ça marche super bien !

A quelle broche relier le reset écran ?

N'importe quelle broche libre.

Le changement de code peut-il se faire en changeant le A4 en "x"

Oui.

Ou dois-je attendre la carte Arduino Mega commandée il y déjà 3 semaines pour avoir un pin analogique supplémentaire ?

Tout dépend du nombre de broches libres sur la UNO. Et il faut d'abord relier UNO et shield avec des fils.
Il n'est pas évident que toutes les broches soient utiles.
Si par exemple le slot SD n'est pas utilisé on peut récupérer toutes les broches marquées SD_*, donc 4 broches.

Bonsoir, les pins de 10 à 13 sont libres à condition de ne pas utiliser le lecteur sd. J'utilise ces sorties pour commander les relais.

dominique_lemanceau:
Ou dois-je attendre la carte Arduino Mega commandée il y déjà 3 semaines pour avoir un pin analogique supplémentaire ?

Bonjour,

Ce n'est pas un problème de pin supplémentaires. Le problème c'est que sur une UNO le bus I2C utilise les pin A4 et A5.
Sur la mega le bus I2C utilise d'autres pins donc tu n'auras pas le problème.