BMP180 et SD

J'ai encore un pb avec le BMP180.

J'avais un code enregistrant sue une carte SD température, humidité, lumière et un systeme de mesure de pluviométrie. Pas de pb, fonctionne depuis 1 an sans erreur.
J'y ajoute le BMP180 pour avoir la pression atmosphérique et la carte SD refuse d'écrire.
Je change d'arduino, rien! Je change de BMP, rien!
Je supprime mes ligne de code parlant du BMP et ça remarche!
Je change de bibliothèque de BMP, passant de la SFE_BMP180 à Adafruit_BMP085... pareil, même pb, ça marche parfaitement sans BMP et ça refuse d'écrire avec.

Y aurait-il un réglage particulier ou une configuration particulière?

je joins le code simplifié (sans DHT, niveau d'eau):

#include <Wire.h>

//........................... SD .............................. 
#include <SD.h>
// ** MOSI - pin 11
// ** MISO - pin 12
// ** CLK - pin 13
// ** CS - pin 4
Sd2Card card;
File myFile;
File myFile1;
const int chipSelect = 4; 
//........................... horloge .........................
#include <RTClib.h>
//SDA --> A4
//SCL --> A5
RTC_DS1307 RTC;
int aa,mm,jj,hh,mn,ss;

//................................. barometre temp int ...........
#include <Adafruit_BMP085.h>
//// ATTENTION   Vcc sur 3.3V
////SDA ---> analogic 4
////SCL ---> Analogic 5
Adafruit_BMP085 bmp;
double tempInt,P;

//.............................
//=============================== SETUP ===========================
void setup() {
  Serial.begin(9600);
  Wire.begin();
  

//............................... SD .............................
  Serial.print("Initializing SD card...");
  pinMode(10, OUTPUT);
   
  if (!SD.begin(4)) {
    Serial.println("initialisation ratee!");
    return;
  }
  Serial.println("initialsation reussie.");
  myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.print("ecriture de  test.txt...");
    myFile.println("testing 1, 2, 3.");
    myFile.close();
    Serial.println("Ok.");
  } else {
    Serial.println("error opening test.txt");
  }

//................................ horloge ......................
  Serial.print("Initialisation horloge...");
  RTC.begin();
  if (! RTC.isrunning())  {
    Serial.println("RTC ne fonctionne pas!");
  } else {
    Serial.println("initialisation reussie.");
  }
  //RTC.adjust(DateTime(__DATE__, __TIME__)); //mise à l'heure


//................................. barometre temp int ...........
  Serial.print("Initialisation barometre...");  
 
  if (!bmp.begin()) {
    Serial.println("BMP180 ne fonctionne pas!");
  } else {
    Serial.print("initialisation reussie.");
  }
  
  Serial.println();

//................................ 

  
}
//================================= VOID ==========================

//................................. ecritureSD ....................
void ecritureSD() {
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {    //test presence carte
    Serial.println("carte non trouvee");
    return;
  } else {
   Serial.print("carte presente.   "); 
  }  
  
  myFile = SD.open("meteo1.csv", FILE_WRITE);
  if (myFile) {
    Serial.print("j'ecris...");
    myFile.print(aa);                               //ecriture sur carte
    myFile.print(',');    
    myFile.print(mm);
    myFile.print(',');
    myFile.print(jj);
    myFile.print(',');
    myFile.print(hh);
    myFile.print(',');
    myFile.print(mn);
    myFile.print(',');
    myFile.print(ss); 
    myFile1.print(" | tInt=");     
    myFile1.print(tempInt);
    myFile1.print(" pression=");  
    myFile1.print(P);  
    myFile.println();
    myFile.close();
    Serial.println("donnees enregistrees sur SD");
  } else {
    Serial.println("ecriture meteo1.csv impossible");
  }
   
}

//................................. affichageEcran ................
void affichageEcran() {
  Serial.print(aa);
  Serial.print("-");
  Serial.print(mm);
  Serial.print("-");
  Serial.print(jj);
  Serial.print("-");
  Serial.print(hh);
  Serial.print("-");
  Serial.print(mn);
  Serial.print("-");
  Serial.print(ss);  
  Serial.print(" | tInt=");  
  Serial.print(tempInt);
  Serial.print(" pression=");  
  Serial.print(P);  
  Serial.println("mb ");

}

//================================= LOOP ==========================
void loop() {

  
//................................ horloge ........................  
  DateTime now = RTC.now();                    // lire date actuelle    
  aa=now.year();
  mm=now.month();
  jj=now.day();
  hh=now.hour();
  mn=now.minute();
  ss=now.second();
    
  if (ss%30==0 ) {
    ecritureSD();
  }
  
  if (ss%10==0) {
    affichageEcran();
    delay(1000);
  }
  
//................................. barometre temp int ...........
  tempInt = bmp.readTemperature();
  P = bmp.readPressure()/100;

merci à tous

Je ne connais pas la librairie SD, et ne sais donc pas si tu peux écrire tous les types de variables dans la SD.

Mais je crois qu'avec la ibrairie BMP, les variables tempInt et P devraient être déclarées en FLOAT et non DOUBLE ?

pas de difference!
merci

Salut,

Le problème est étrange, car je fait la même chose sur ma mini station méteo et pas de soucis entre la SD et le BMP 180, par contre j'utilise une Arduino Méga.

Mini station méteo

@+

j'ai aussi réfléchi à la mesure de pluviométrie... pas facile!
J'en suis à mon 3° essai, mais il semble être le bon.
Si ça t'intéresse...
J'ai aussi ajouté la luminosité, c'est amusant de mettre en courbe 24h de luminosité.

Salut,

Alors cela fonctionne maintenant la SD et le BMP180 ?.

@+

non, toujours pas et en plus elle ecrit des horreurs et il faut reformater la carte!!

derniéres nouvelles:
Je crois avoir trouvé la cause mais pas la solution.

je fais les montage suivant:

  1. uno + bmp180 -----------------------> fonctionne parfaitement

  2. uno + bmp180 + carte SD ----------> ecrit des insanités: titre du fichier: "QUS╠H.╘╒ "au lieu de "meteo.csv"

  3. uno + DHT22 + carte SD-------------> fonctionne parfaitement

j'ai commandé un autre senseur de pression barométrique, mais pas un bmp180. Mais ça ne résoud pas ce pb!