Bonjour,
Je suis étudiant, et pour un projet de fin d'année mon équipe et moi travaillons sur un Ballon Sonde. Et nous faisons fonctionner plusieurs capteurs différents en même temps sur un arduino et enregistre aussi les données sur une carte SD.
Mon problème est que le code comment a devenir assez grand, et donc sa devient le "bordelle", surtout qu'il n'y pas encore tout les capteurs.
J'aimerais s'avoir s'il existe des sortes de macro/raccourcis pour avoir par exemple dans chaque macro un capteur seul.
Et tant qu'a faire, si vous voyez des "erreurs" dans mon code ou des choses qui pourrait être plus pratique, donnant le même résultat avec moins de code ect.. merci d'avance.
ps: le code fonctionne.
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include "SparkFunHTU21D.h"
#include "Adafruit_SI1145.h"
Adafruit_SI1145 uv = Adafruit_SI1145();
HTU21D myHumidity;
int tempPin = 2; //tmp36
int sensorPression = 1; //mpx5100p
int mpx5100p= 0; // mpx5100p
const int chipSelect = 4;
unsigned long time;
const unsigned int TEMP_SENSOR_PIN = 0;
const float SUPPLY_VOLTAGE = 5.0;
// TEMPERATURE LM35
const float get_temperature() {
const int sensor_voltage = analogRead(TEMP_SENSOR_PIN);
const float voltagee = sensor_voltage * SUPPLY_VOLTAGE / 1024;
return (voltagee * 100);
}
void setup()
{
Serial.begin(9600);
myHumidity.begin();
while (!Serial) {
;
}
Serial.print("Initialisation de la SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("ERREUR SD");
}
Serial.println("card initialiser.");
}
void loop(){
File lm35File = SD.open("lm35.txt", FILE_WRITE);
File mpx5100pFile = SD.open("mpx5100p.txt", FILE_WRITE);
File htu21dFile = SD.open("htu21d.txt", FILE_WRITE);
File si1145File = SD.open("si1145.txt", FILE_WRITE);
File tmp36File = SD.open("tmp36.txt", FILE_WRITE);
int reading = analogRead(tempPin);//tmp36
float UVindex = uv.readUV(); // si1145
UVindex /= 100.0; // si1145
float humd = myHumidity.readHumidity(); // htu21d
float temp = myHumidity.readTemperature(); // htu21d
float voltage = reading * 5.0; //tmp36
voltage /= 1024.0; // tmp36
float temperatureC = (voltage - 0.5) * 100 ; //tmp36
if (tmp36File) {
tmp36File.print(temperatureC);
tmp36File.print(" ");
time = millis();
tmp36File.println(time);
delay(250);
tmp36File.close();
// test capteur moniteur fonctionne ou pas
Serial.println("=======TMP36=======");
Serial.print(temperatureC); Serial.println(" C");
}
if (mpx5100pFile) {
mpx5100p = analogRead(sensorPression);
mpx5100pFile.print(mpx5100p);
mpx5100pFile.print(" ");
time = millis();
mpx5100pFile.println(time);
delay(250);
mpx5100pFile.close();
// test capteur moniteur fonctionne ou pas
Serial.println("=======MPX5100P=======");
Serial.print(mpx5100p); Serial.println(" hPa");
}
if (lm35File) {
time = millis();
lm35File.print(time);
lm35File.print(" ");
lm35File.println(get_temperature());
delay(250);
lm35File.close();
// test capteur moniteur fonctionne ou pas
Serial.println("=======LM35=======");
Serial.print(get_temperature()); Serial.println(" C");
}
if (htu21dFile) {
time = millis();
htu21dFile.print(time);
htu21dFile.print(" ");
htu21dFile.println(humd, 1);
delay(250);
htu21dFile.close();
// test capteur moniteur fonctionne ou pas
Serial.println("======HTU21D=====");
Serial.print(humd, 1); Serial.println(" %");
}
if (si1145File) {
time = millis();
si1145File.print(time);
si1145File.print(" ");
si1145File.print("Vis: "); si1145File.print(uv.readVisible());
si1145File.print(" IR: "); si1145File.print(uv.readIR());
si1145File.print(" UV: "); si1145File.println(UVindex);
delay(250);
// test capteur moniteur fonctionne ou pas
Serial.println("=======SI1145========");
Serial.print("Vis: "); Serial.print(uv.readVisible());
Serial.print(" IR: "); Serial.print(uv.readIR());
Serial.print(" UV: "); Serial.println(UVindex);
si1145File.close();
}
else {
Serial.println("ERREUR Impossible d'ouvrir le/les fichier(s)");
}
}