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