Bonjour à tous,
En fait c'est le premier programme qui rentre dans le vif du sujet de ce que je veux faire :
Si la température T1 est supérieure à T3, je veux allumer une LED ( en attendant de mettre en route une pompe)
J'ai donc travaillé à partir de ce programme (dont la source est indiquée dans les commentaires) et j'ai rajouté à la fin 10 lignes pour faire la comparaison et activer la LED.
Je relève bien mes 3 températures sur le moniteur série et j'ai bien la LED qui s'allume si j'enlève la condition T1>T3.
Je ne sais pas ce que je récupère comme type de valeur pour les températures ( le moniteur affiche 19,65 °C environ pour les 3 températures) or si je teste une sortie moniteur de T1 - T3 je lis -16 alors que T1 est environ égal à la température T2 et T3 (les 3 sondes sont plantées côte à côte sur la breadboard).
Voici le programme :
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 // sondes DS18B20 sur pin 2 sur ma Mega Arduino
OneWire oneWire(ONE_WIRE_BUS);// Setup a oneWire instance to communicate with any OneWire devices
DallasTemperature sensors(&oneWire);// Pass our oneWire reference to Dallas Temperature.
// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses: c'est bon je l'ai fait et ça marche
// Arduino 1-Wire Address Finder
DeviceAddress T1 = { 0x28, 0xEB, 0x59, 0xE1, 0x03, 0x00, 0x00, 0x8B };//les adresses de mes 3 sondes
DeviceAddress T2 = { 0x28, 0x36, 0x35, 0xE1, 0x03, 0x00, 0x00, 0x35 };
DeviceAddress T3 = { 0x28, 0xA4, 0x3A, 0xE1, 0x03, 0x00, 0x00, 0x85 };
const int LED=10; //LED sur pin 10 // je l'ai rajouté
void setup(void)
{
//init entrees
Serial.begin(115200);// start serial port
sensors.begin(); // Start up the library
sensors.setResolution(T1, 12);// fixe la resolution a 12 bit
sensors.setResolution(T2, 12);
sensors.setResolution(T3, 12);
//init sorties
pinMode (LED, OUTPUT);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
//Serial.print("degre C: ");
Serial.print(tempC);
//Serial.print(" F: ");
//Serial.print(DallasTemperature::toFahrenheit(tempC));//conversion C->F
}
}
void loop(void)
{
delay(2000); //delai de 2"
Serial.print("Temperatures...\n\r");
sensors.requestTemperatures();
Serial.print("T1: ");
printTemperature(T1);
Serial.print("\n\r");
Serial.print("T2: ");
printTemperature(T2);
Serial.print("\n\r");
Serial.print("T3: ");
printTemperature(T3);
Serial.print("\n\r\n\r");
Serial.println();
if ((T1) > (T3))
{
digitalWrite (LED, HIGH);
delay (500);
} else
{
digitalWrite (LED, LOW);
delay (500);
}
}
Merci de m'aider à allumer ma LED lorsque je chauffe T1 avec les doigts !