Bonjour,
j'ai en projet d'acquérir et de visualiser en temps réel la température de ma chaine d'acquisition 1-wire (donc des capteurs ds18b20). Mon programme Arduino est completement terminé :
#include <SD.h> //Bibliothèques utilisées
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS); //On déclare la présence de bus 1-Wire
DallasTemperature sensors(&oneWire);
DeviceAddress temp1 = { 0x28, 0x06, 0xE0, 0x77, 0x03, 0x00, 0x00, 0xBC }; //Déclaration des adresses des capteurs du bus
DeviceAddress temp2 = { 0x28, 0x87, 0xA9, 0x77, 0x03, 0x00, 0x00, 0x7B };
DeviceAddress temp3 = { 0x28, 0x6F, 0xE4, 0x77, 0x03, 0x00, 0x00, 0xF6 };
File myFile; //Variable de la carte SD
int realtime = 1; //Calcul du temps (en secondes)
void setup(void){
Serial.begin(9600); //port série //Vitesse de transmission (il faut la même sur le pc, dans la console)
sensors.begin();
sensors.setResolution(temp1, 10); //resolution de la mesure (8/10 ou 12 bits)
sensors.setResolution(temp2, 10);
sensors.setResolution(temp3, 10);
if (!SD.begin(4)) { //Initialisation de la carte
Serial.println("initialization failed!");
return;
}
myFile = SD.open("test.lvm", FILE_WRITE); //Ecriture de l'entête du fichier avec les noms des capteurs
myFile.print("\t");
myFile.print("capteur1\t");
myFile.print("capteur2\t");
myFile.println("capteur3\t");
myFile.close(); //Fermeture du fichier
}
void printTemperature(DeviceAddress deviceAddress) //Boucle 1-Wire (à ne pas toucher, mise a part pour modifier l'erreur)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("erreur mesure");
} else {
Serial.print("C: ");
Serial.print(tempC); }
}
void loop(void) //Boucle de mesure et d'écriture
{
delay(1000); //Fréquence d'acquisition
sensors.requestTemperatures(); //Requete de la température aupres des capteurs
myFile = SD.open("test.lvm", FILE_WRITE); //Ouverture du fichier
if (myFile) {
float temp1 = (sensors.getTempCByIndex(0)); //Indexation des mesures (obligatoire sinon erreur d'ecriture)
float temp2 = (sensors.getTempCByIndex(1)); //Rajouter une ligne à chaques nouveaux capteurs et incrémenter la valeur de l'index
float temp3 = (sensors.getTempCByIndex(2));
myFile.print(realtime ++); //Calcul du temps et écriture (en secondes) et incrémentation de la valeur
myFile.print("\t"); //Ecriture des mesures sur la carte SD, rajouter une tabulation et une ecriture de la
myFile.print(temp1); //mesure a chaque nouveaux capteurs
myFile.print("\t");
myFile.print(temp2);
myFile.print("\t");
myFile.println(temp3);
myFile.close(); //Fermeture du fichier
Serial.println("done");
} else {
Serial.println("error opening test.txt"); //Erreur d'ouverture du fichier
}
}
Mais je bloque sur la visualisation en temps réel, je me suis penché sur le logiciel "Processing" mais je ne comprends pas vraiment comment il peut communiquer avec mon arduino. Est-ce que ce logiciel vous semble bon pour une visualisation de température ? Sachant que je souhaite par la suite rajouter des options (bouton enregistrer le graphe, afficher les données de temps, utilisation du CPU de l'arduino, affichage de la mémoire restante....).
Si jamais "Processing" vous semble bien, un petit (tout petit) morceau de code serait super pour que je puisse commencer, histoire de bien apprendre
Merci d'avance pour vos réponses !
Lykaa