Bonjour,
j'ai modifié un sketch que j'ai récupéré pour afficher les valeurs de sondes 1wire de température
Lorsque je compile j'ai cette erreur " invalid conversion from 'byte*' to 'byte'"
J'ai beau modifié le type byte adressecapteur mais rien n'y fait ...
Avez vous une idée de ce qui se passe ?
// --- Inclusion des librairies utilisées ---
#include <OneWire.h> // librairie pour capteur OneWire
// --- Déclaration des constantes ---
//---- code des instructions du capteur
const int modeLecture=0xBE;
const int lancerMesure=0x44;
// --- constantes des broches ---
const int broche_OneWire=2; //declaration constante de broche
const int broche_rel01=3;
const int broche_rel02=4;
// --- Déclaration des variables globales ---
byte adrCaptPiscine[8] = {0x28, 0x6C, 0xBB, 0x25, 0x02, 0x0, 0x0, 0x21}; // adresse sonde Piscine
byte adrCaptPac[8] = {0x28, 0x29, 0x79, 0x7B, 0x02, 0x0, 0x0, 0xD3}; // adresse sonde Pac
byte adrCaptBulle[8] = {0x28, 0x7B, 0x65, 0x8B, 0x03, 0x0, 0x0, 0x14}; // adresse sonde Pac Bulle
byte data[12]; // Tableau de 12 octets pour lecture des 9 registres de RAM et des 3 registres d'EEPROM du capteur One Wire
float ma_tempetf=0.0;
String chaineRecue=""; // déclare un string vide global
int comptChar=0; // variable de comptage des caractères reçus
float tempPiscine=0.0;
float tempPac=0.0;
float tempBulle=0.0;
// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
OneWire capteur(broche_OneWire); // crée un objet One Wire sur la broche voulue
void setup() { // debut de la fonction setup()
Serial.begin(115200); // initialise connexion série à 115200 bauds
pinMode(broche_rel01, OUTPUT); //met la broche en sortie
pinMode(broche_rel02, OUTPUT); //met la broche en sortie
}
void loop(){ // debut de la fonction loop()
tempPiscine = capteurMesureTemp(adrCaptPiscine); // appel de la fonction de mesure - renvoie une valeur float
tempPac = capteurMesureTemp(adrCaptPac);
tempBulle = capteurMesureTemp(adrCaptBulle);
if (tempBulle > 30)
{ Serial.println("Temperature Bulle sup a 30 degres");
digitalWrite(broche_rel01,HIGH);
digitalWrite(broche_rel02,LOW);} // met la broche au niveau haut (5V) – allume la LED
else {Serial.println("Temperature Bulle inf a 30 degres");
digitalWrite(broche_rel02,HIGH);
digitalWrite(broche_rel01,LOW); } // met la broche au niveau bas (0V) – éteint la LED
delay(10000); // pause de 10 secondes
}
float capteurMesureTemp(byte adressecapteur) { //fonction qui renvoie résultat float selon l'adresse du capteur
//-------- variable locale de la fonction ----------
int tempet=0; // variable pour resultat brute de la mesure
float tempetf=0.0; // variable pour resultat à virgule de la mesure
// XXXXXXXXXXXXXXXXXXXXXX Lancement d'une mesure et lecture du résultat XXXXXXXXXXXXXXXXXXXXXXX
// Serial.println("**** Acquisition d'une mesure de la temperature **** ");
// avant chaque nouvelle instruction, il faut :
// * initialiser le bus 1-wire
// * sélectionner le capteur détecté
// * envoyer l'instruction
//--------- lancer une mesure --------
capteur.reset(); // initialise le bus 1-wire avant la communication avec un capteur donné
capteur.select(adressecapteur); // sélectionne le capteur ayant l'adresse 64 bits contenue dans le tableau envoyé à la fonction
capteur.write(lancerMesure,1); // lance la mesure et alimente le capteur par la broche de donnée
//-------- pause d'une seconde -----
delay(1000); // au moins 750 ms
// il faudrait mettre une instruction capteur.depower ici, mais le reset va le faire
//---------- passer en mode LECTURE -------------
capteur.reset(); // initialise le bus 1-wire avant la communication avec un capteur donné
capteur.select(adressecapteur); // sélectionne le capteur ayant l'adresse 64 bits contenue dans le tableau envoyé à la fonction
capteur.write(modeLecture,1); // passe en mode lecture de la RAM du capteur
// ----------- lire les 9 octets de la RAM (appelé Scratchpad) ----
for ( int i = 0; i < 9; i++) { // 9 octets de RAM stockés dans 9 octets
data[i] = capteur.read(); // lecture de l'octet de rang i stocké dans tableau data
}
//----- caclul de la température mesurée (enfin!) ---------
data[1]=data[1] & B10000111; // met à 0 les bits de signes inutiles
tempet=data[1]; // bits de poids fort
tempet=tempet<<8;
tempet=tempet+data[0]; // bits de poids faible
// --- en mode 12 bits, la résolution est de 0.0625°C - cf datasheet DS18B20
tempetf=float(tempet)*6.25;
tempetf=tempetf/100.0;
Serial.println("**** temperature Piscine **** ");
Serial.println(tempetf);
return tempetf;
}