Bonjour,
J'ai modifié un sketch Dallas existant pour la lecture de températures et il fonctionne comme je veux.
Ca c'est compliqué quand je l'ai ajouté dans mon programme principal. Ca complile mais plus rien ne fonctionne. Après de multiples recherches et en isolant des bouts de codes j'ai fini par trouvé ce qui coince mais le pourquoi ......
Voici le code
#include <config.h>
#include <ds3231.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 19
#define TEMPERATURE_PRECISION 12
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress air, eau;
unsigned long temps1; int interval1 = 10000;
struct ts t;
void setup(void)
{
Serial.begin(115200);
//lcd.begin();
//DS3231_init(DS3231_INTCN);
sensors.begin();
DeviceAddress (air) = { 0x28, 0xFF, 0x66, 0x3F, 0x60, 0x16, 0x05, 0xCB };
DeviceAddress (eau) = { 0x28, 0xFF, 0xD5, 0x18, 0xC0, 0x16, 0x05, 0xCA };
Serial.print("Device 0 Address: ");
printAddress(air);
Serial.println();
Serial.print("Device 1 Address: ");
printAddress(eau);
Serial.println();
sensors.setResolution(air, TEMPERATURE_PRECISION);
sensors.setResolution(eau, TEMPERATURE_PRECISION);
}
// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
for (uint8_t i = 0; i < 8; i++)
{
// zero pad the address if necessary
if (deviceAddress[i] < 16) Serial.print("0");
Serial.print(deviceAddress[i], HEX);
}
}
void loop(void)
{
if (millis() - temps1 >= interval1) {
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(1);
Serial.print("Temp Eau: ");
Serial.print(tempC);
tempC = sensors.getTempCByIndex(0);
Serial.print("Temp Air: ");
Serial.println(tempC);
temps1 = millis();
}
}
Si dans le setup je décommente la ligne lcd.begin(); et ou DS3231_init(DS3231_INTCN);
Ca ne fonctionne plus. Je n'ai même plus les indications sur le moniteur série.
Si je déplace le lcd.begin après les Serial.print, là j'ai bien les indications du setup sur le moniteur série mais plus rien après.
Tout ca tourne sur une mega 2560 avec des DS18b20 un lcd 20x4 et une DS3231.
J'ai supprimé dans la loop toute la partie code autre que celle liée aux DS18b20 pour faire court.
Si quelqu'un a une idée, je suis preneur car ca dépasse mes compétences d'amateur.
Merci d'avance