Projet Bac STI2D : Problème de Programmation

Bonjour,

Je suis actuellement entrain de faire une Station Météo avec un capteur de Pression, d’Humidité et de Température, ainsi qu’un Site Web. Avec le code-ci dessous j’arrive a afficher mes données sur une page html créer par le programme mais j’aimerais qu’il affiche les valeurs sur une page html déjà existante qui est sur ma carte SD (index.htm). J’ai essayé d’utiliser Webduino en regardant les différents exemples mais aillant des lacunes en programmation je n’arrive pas a adapté mon code. Pouvez-vous m’éclairer sur l’adaptation de celui-ci ?

Merci,

#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <WeatherShield1.h>
#include <SD.h>

#define BUFSIZ 48
#define DS1621_ID 0x90 >> 1

//ADRESSE LOCAL MAC ET IP
byte ip = { 192,168,1,15 };
byte mac = { 0x90, 0xA2, 0xDA, 0x0D, 0x1F, 0xED };
#define RXBUFFERLENGTH 4
WeatherShield1 weatherShield;

//SD Carte
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
#define error(s) error_P(PSTR(s))

/* Capteur /
class WeatherData {
private:
float fTemperature;
unsigned short shTemperature;
float fPressure;
unsigned short shPressure;
float fHumidity;
unsigned short shHumidity;
public:
WeatherData() { bReady = false; }
// Méthode
float getAvgTemperature() { return fTemperature; }
float getInstTemperature() { return ((float)shTemperature/16); }
float getAvgPressure() { return fPressure; }
float getInstPressure() {
float value ;
value = (((float)shPressure/1024)+0.095)/0.009;
return value;
}
float getAvgHumidity() { return fHumidity; }
float getInstHumidity() {
float value;
value = (((float)shHumidity/1024)-0.1515)/0.00636;
// humidité avec la temperature
value = value/(1.0546-0.00216
getInstTemperature());
return value;
}
// Méthode
void setAvgTemperature(float Temperature) { fTemperature=Temperature; }
void setInstTemperature(unsigned short Temperature) { shTemperature=Temperature; }
void setAvgPressure(float Pressure) { fPressure=Pressure; }
void setInstPressure(unsigned short Pressure) { shPressure=Pressure; }
void setAvgHumidity(float Humidity) { fHumidity=Humidity; }
void setInstHumidity(unsigned short Humidity) { shHumidity=Humidity; }
public:
boolean bReady;
};
// serveur
EthernetServer server(80);
char rootFileName = “index.htm”;
String readString;
float temp;
WeatherData weatherData;
boolean currentLineIsBlank = true;
void setup() {

Ethernet.begin(mac, ip);
server.begin();
}

void loop() {

EthernetClient client = server.available();
if (client) {

// client.print("\n");
// client.print(");

readString="";
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString.concat(c);
if (c == ‘\n’) {
break; }
}
}
if(readValues(weatherShield))
client.print(“Temperature:(Celsius)\n”);
client.print(weatherData.getInstTemperature());
client.print("\nPression: (hPa)\n");
client.print(weatherData.getInstPressure());
client.print("\nHumidite: (%)\n");
client.print(weatherData.getInstHumidity());
client.print("\n");
client.print("");

delay(1);
// fermer connection
client.stop();
}
}

boolean readValues(WeatherShield1 &weatherShield) {

unsigned char ucBuffer[RXBUFFERLENGTH];
/* connection /
if (weatherShield.sendCommand(CMD_ECHO_PAR, 100, ucBuffer)) {
/
temperature /
if (weatherShield.sendCommand(CMD_GETTEMP_C_AVG, 0, ucBuffer))
weatherData.setAvgTemperature(weatherShield.decodeFloatValue(ucBuffer));
if (weatherShield.sendCommand(CMD_GETTEMP_C_RAW, PAR_GET_LAST_SAMPLE, ucBuffer))
weatherData.setInstTemperature(weatherShield.decodeShortValue(ucBuffer));
/
pression /
if (weatherShield.sendCommand(CMD_GETPRESS_AVG, 0, ucBuffer))
weatherData.setAvgPressure(weatherShield.decodeFloatValue(ucBuffer));
if (weatherShield.sendCommand(CMD_GETPRESS_RAW, PAR_GET_LAST_SAMPLE, ucBuffer))
weatherData.setInstPressure(weatherShield.decodeShortValue(ucBuffer));
/
humidité */
if (weatherShield.sendCommand(CMD_GETHUM_AVG, 0, ucBuffer))
weatherData.setAvgHumidity(weatherShield.decodeFloatValue(ucBuffer));
if (weatherShield.sendCommand(CMD_GETHUM_RAW, PAR_GET_LAST_SAMPLE, ucBuffer))
weatherData.setInstHumidity(weatherShield.decodeShortValue(ucBuffer));
return true;
}
return false;
}

bonjour,
pourquoi 2 fois #include <Ethernet.h>

Ah oui c'est une petite erreur, c'est rectifiée, mais cela ne résout pas mon problème.

Après modification de mon code, j'ai un problème dans mon void setup() sur la ligne "Wire.beginTransmission();" je ne l'a comprends pas, je dois mettre l'adresse soit weatherData.setInstHumidity ?. Ensuite je pense que mon void loop() comporte des erreurs.

http://fr.sourcepod.com/fgdzbn74-18693 (Je dépasse pour les characters sur le forum)

Si tu utilise des capteurs I2c il faut inclure Wire.begin() dans le setup librairie ou pas c'est impératif.