Bonjour à tous,
Je suis actuellement en projet de TPE en 1ere S-SI au lycée, et je prépare une station météo sur base d’Arduino avec différents capteurs. J’ai également intégré un lecteur de carte SD. Je me suis inspiré d’un code trouvé sur internet, et j’ai une erreur à l’issu de la compilation :
expected constructor, destructor, or type conversion before ‘(’ token
à la ligne 134 du programme et colonne 8.
Voici le programme en question :
/*
SD Card connection: MOSI - pin 11 ; MISO - pin 12 ; CLK - pin 13 ; CS - pin 10
*/
// Libraries
#include <SD.h> // Library for SD card connection
#include <SPI.h>
#include <Wire.h> // Library to communicate with I2C modules
#include "RTClib.h" // Library to use RTC module
#include <Adafruit_BMP085.h> // Library to use BMP085
#include "DHT.h" // library to use DHT sensor
#include <LiquidCrystal.h>
// Variable declaration
#define DHTPIN 2 // Digital pin of DHT sensor
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT myDHT(DHTPIN, DHTTYPE,3); // Instanciate DHT module
RTC_DS1307 myRTC; // Instanciate RTC module
File myOutputFile; // Instanciate output file
char myData[100]; // Contain current data
Adafruit_BMP085 myBMP; // Instanciate BMP module
LiquidCrystal lcd(7, 8, 9, 3, 4, 5); //On définie les Pins pour l'écran LCD
uint16_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minute;
uint8_t second;
float temp_BMP;
int temp_BMP_int; // Integer part of temperature
int temp_BMP_dec; // Decimal part of temperature
int32_t pressure_BMP;
float temp_DHT;
int temp_DHT_int;
int temp_DHT_dec;
float humidity_DHT;
int humidity_DHT_int;
int humidity_DHT_dec;
void setup()
{
// Start SD card connection : wait for port to open
pinMode(10, OUTPUT);
SD.begin(10);
analogReference(INTERNAL);
// Start I2C connections
Wire.begin();
// Start RTC module
myRTC.begin();
if (! myRTC.isrunning()) {
// Following line sets the RTC to the date & time this sketch was compiled
myRTC.adjust(DateTime(__DATE__, __TIME__));
}
// Start BMP module
if (!myBMP.begin()) {
//Could not find a valid BMP085 sensor, check wiring
}
// Start DHT module
myDHT.begin();
// Start LCD module
lcd.begin(20, 4);
}
void loop()
{
// Retrieve RTC date
DateTime myDateTime = myRTC.now();
year = myDateTime.year();
month = myDateTime.month();
day = myDateTime.day();
hour = myDateTime.hour();
minute = myDateTime.minute();
second = myDateTime.second();
// Retrieve BMP085 data
temp_BMP = myBMP.readTemperature();
temp_BMP_int = int(temp_BMP);
temp_BMP_dec = int((temp_BMP - temp_BMP_int)*100.);
pressure_BMP = myBMP.readPressure();
// Retrieve DHT22 data
temp_DHT = myDHT.readTemperature();
temp_DHT_int = int(temp_DHT);
temp_DHT_dec = int((temp_DHT - temp_DHT_int)*100.);
humidity_DHT = myDHT.readHumidity();
humidity_DHT_int = int(humidity_DHT);
humidity_DHT_dec = int((humidity_DHT - humidity_DHT_int)*100.);
sprintf(myData, "%u/%u/%u %u:%u:%u %i.%i %li %i.%i %i.%i", year, month, day, hour, minute, second, temp_BMP_int, temp_BMP_dec, pressure_BMP, temp_DHT_int, temp_DHT_dec, humidity_DHT_int, humidity_DHT_dec);
myOutputFile = SD.open("Data.txt", FILE_WRITE);
myOutputFile.println(myData);
myOutputFile.close();
// LCD Display+
// Date
sprintf(myData, "%u/%u/%u", day, month, year);
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print(myData);
// Time
sprintf(myData, "%u:%u:%u", hour, minute, second);
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(myData);
// BMP085 temp
sprintf(myData, "%i.%idegC", temp_BMP_int, temp_BMP_dec);
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(myData);
// DHT22 temp
sprintf(myData, "%i.%idegC", temp_DHT_int, temp_DHT_dec);
lcd.setCursor(0, 3);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(myData);
// BMP085 pressure
sprintf(myData, "%liPa", pressure_BMP);
lcd.setCursor(0, 4);
lcd.print(" ");
lcd.setCursor(0, 4);
lcd.print(myData);
// DHT22 humidity
sprintf(myData, "%i.%i%%", humidity_DHT_int, humidity_DHT_dec);
lcd.setCursor(10, 4);
lcd.print(" ");
lcd.setCursor(10, 4);
lcd.print(myData);
}
delay(100);
A noter que je n’ai pas encore adapté l’affichage des données sur l’écran LCD 20x4 que je possède au programme. (initialement conçu pour un écran LCD de vieux téléphone Nokia …)
Merci à ceux qui auraient une idée d’où pourrait provenir le problème.