Bonjour,
j ai un souci de programmation le code :
#include <OneWire.h> //librairie Onewire - Port OneWire - sorte de pilote contenant les instructions pour s'en servir
#include <DallasTemperature.h> // librairie dallastemperature - T° - sorte de pilote contenant les instructions pour s'en servir/*
Arduino branchement
Analog Pin 0 = H% Sensor
Analog Pin 1 = H% Sensor
Analog Pin 2 = H% Sensor
Analog Pin 3 = H% Sensor
Analog Pin 4 = SDA pour ds1307
Analog Pin 5 = SCL pour ds1307Digital Pin 0 = Relais Chauffage Terra 1
Digital Pin 1 = Relais Chauffage Terra 2
Digital Pin 2 = Relais Chauffage Terra 3
Digital Pin 3 = Relais Chauffage Terra 4
Digital Pin 4 = Relais H% Terra 1
Digital Pin 5 = Relais H% Terra 2
Digital Pin 6 = Relais H% Terra 3
Digital Pin 7 = Relais H% Terra 4
Digital Pin 8 = Relais Lumière Terras
Digital Pin 9 =
Digital Pin 10 =
Digital Pin 11 =
Digital Pin 12 =
Digital Pin 13 = T° Sensor*/
int time;
int val_up=0;
int val_down=0;
long last_time1 = 0;
long last_time2 = 0;//Définition pin de sortie
int CTerra1 = 0;
int CTerra2 = 1;
int CTerra3 = 2;
int CTerra4 = 3;
int HTerra1 = 4;
int HTerra2 = 5;
int HTerra3 = 6;
int HTerra4 = 7;
int LTerra = 8;// Définition pin entrée digital Dallas
#define ONE_WIRE_BUS 13// Définition communication avec tout matériel Onewire
OneWire oneWire(ONE_WIRE_BUS);// Référence t° Dallas
DallasTemperature sensors(&oneWire);// arrays to hold device addresses
uint8_t T1[8], T2[8], T3[8], T4[8], T5[8], T6[8], T7[8], T8[8];char buf1[10];
char buf2[10];
char buf3[10];
char buf4[10];
char buf5[10];
char buf6[10];
char buf7[10];
char buf8[10];// Nuit_Jour Temp
float Temp1Nuit=22.0;
float Temp1Jour=25.0;void setup(void)
{
// Pin mis en sortie
pinMode(CTerra1, OUTPUT);
pinMode(CTerra2, OUTPUT);
pinMode(CTerra3, OUTPUT);
pinMode(CTerra4, OUTPUT);
pinMode(HTerra1, OUTPUT);
pinMode(HTerra2, OUTPUT);
pinMode(HTerra3, OUTPUT);
pinMode(HTerra4, OUTPUT);
pinMode(LTerra, OUTPUT);// Démarre le port série
Serial.begin(1200);
Serial.println("Gestion Terra");/RTC.stop(); // a enlever / à la première initialisation et a remettre ensuite
RTC.set(DS1307_SEC,00); //réglage secondes du moment
RTC.set(DS1307_MIN,28); //réglage minutes du moment
RTC.set(DS1307_HR,11); //réglage heures du moment
RTC.set(DS1307_DOW,1); //réglage jour de la semaine du moment
RTC.set(DS1307_DATE,31); //réglage date du moment
RTC.set(DS1307_MTH,05); //réglage mois du moment
RTC.set(DS1307_YR,11); //réglage année du moment
RTC.start(); // a enlever /* à la première initialisation et a remettre ensuite
*/// Démarre la librairie
sensors.begin();
if (!sensors.getAddress(T1, 0)) Serial.println("Unable to find address for Device 0");
if (!sensors.getAddress(T2, 1)) Serial.println("Unable to find address for Device 1");
if (!sensors.getAddress(T3, 2)) Serial.println("Unable to find address for Device 2");
if (!sensors.getAddress(T4, 3)) Serial.println("Unable to find address for Device 3");
if (!sensors.getAddress(T5, 4)) Serial.println("Unable to find address for Device 4");
if (!sensors.getAddress(T6, 5)) Serial.println("Unable to find address for Device 5");
if (!sensors.getAddress(T7, 6)) Serial.println("Unable to find address for Device 6");
if (!sensors.getAddress(T8, 7)) Serial.println("Unable to find address for Device 7");
// show the addresses we found on the bus
Serial.print("Device 0 Address: ");
printAddress(T1);
Serial.println();
Serial.print("Device 1 Address: ");
printAddress(T2);
Serial.println();
Serial.print("Device 2 Address: ");
printAddress(T3);
Serial.println();
Serial.print("Device 3 Address: ");
printAddress(T4);
Serial.println();
Serial.print("Device 4 Address: ");
printAddress(T5);
Serial.println();
Serial.print("Device 5 Address: ");
printAddress(T6);
Serial.println();
Serial.print("Device 6 Address: ");
printAddress(T7);
Serial.println();
Serial.print("Device 7 Address: ");
printAddress(T8);
Serial.println();
}// fonction pour afficher les adresses
void printAddress(uint8_t deviceAddress[])
{
for (uint8_t i = 0; i < 8; i++)
{
Serial.print(deviceAddress*, HEX);*
- if (i < 7) Serial.print(" ");*
- }*
}
void loop(void)
{
sensors.requestTemperatures(); // envoie de commande de récupération// lecture de la t° (autant que de capteur dallas - jusqu'a 10 dans exemple)
itoa(sensors.getTempCByIndex(0),buf1,9);
if (!sensors.getAddress(T1, 0))
{
if (sensors.getTempCByIndex(0)<25)
{*
Serial.print("Terra 1 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(0));*
Serial.println(" Chauffage en route ");*
}*
else*
{Serial.print("Terra 1 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(0));*
Serial.println(" Ventilation en route ");*
}
}
itoa(sensors.getTempCByIndex(1),buf2,9);
if (!sensors.getAddress(T2, 1))
{
if (sensors.getTempCByIndex(1)<25){*
Serial.print("Terra 2 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(1));*
Serial.println(" Chauffage en route ");*
}*
else*
{Serial.print("Terra 2 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(1));*
Serial.println(" Ventilation en route ");*
}
}itoa(sensors.getTempCByIndex(2),buf3,9);*
if (!sensors.getAddress(T3, 2))*
{
if (sensors.getTempCByIndex(2)<25){*
Serial.print("Terra 3 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(2));*
Serial.println(" Chauffage en route ");*
}*
else*
{Serial.print("Terra 3 :");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(2));*
Serial.println(" Ventilation en route ");*
}
}itoa(sensors.getTempCByIndex(3),buf4,9);*
if (!sensors.getAddress(T4, 3))*
{
if (sensors.getTempCByIndex(3)<25){*
Serial.print("Terra 4 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(3));*
Serial.println(" Chauffage en route ");*
}*
else*
{Serial.print("Terra 4 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(3));*
Serial.println(" Ventilation en route ");*
}
}itoa(sensors.getTempCByIndex(4),buf5,9);*
if (!sensors.getAddress(T5, 4))*
{
if (sensors.getTempCByIndex(4)<25){*
Serial.print("Terra 5 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(4));*
Serial.println(" Chauffage en route ");*
}*
else*
{Serial.print("Terra 5 :"); *
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(4));*
Serial.println(" Ventilation en route ");*
}
}itoa(sensors.getTempCByIndex(5),buf6,9);*
{*
if (!sensors.getAddress(T6, 5))*
{
if (sensors.getTempCByIndex(5)<25){*
Serial.print("Terra 6 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(5));*
Serial.println(" Chauffage en route ");*
}*
else*
{Serial.print("Terra 6 : ");*
Serial.print("T° : ");*
Serial.print(sensors.getTempCByIndex(5));*
Serial.println(" Ventilation en route ");*
}
}
}
}[/quote]
La carte duemilanove 328
une proshield ou sont connectés les DS18B20 avec sur le 5v une résistance de 1k, la 4k7 empêchait la reconnaissance des capteurs pour la pin 2
et les pin 1 et 3 sont sur le GNd de la carte
les capteurs sont montés en série avec des prises jack audio (peu de longueur), pour pouvoir ajouter au fur et a mesure des besoins de nouveaux capteurs
alimentation le port usb de la carte (y compris les dallas)
le problème :
en mode 9600 bauds, caractrère bizarre en début de programme en 1200 pas de soucis
il me reconnait bien les 2 capteurs connectés mais sur les autres adresses il me récupère la dernière adresse connue alors que je souhaite aucune
par contre il ne me ressort aucune valeur pour les Terras 1 et 2 du programme (condition du loop) comme si il n y avait aucun adressage, alors que j ai bien l adressage des capteurs (demandé dans le setup)
si quelqu un avait une idée, là je sèche
merci par avance