Go Down

Topic: [RESOLU] invalid conversion from 'byte*' to 'byte' (Read 280 times) previous topic - next topic

PITP2

Jun 09, 2013, 08:16 pm Last Edit: Jun 09, 2013, 08:52 pm by PITP2 Reason: 1
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 ?

Code: [Select]
// --- 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;
}

B@tto

Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

PITP2

En effet avec la ligne cela aurait été mieux elle est partie dans la simplification du code avant de le poster lol

Mais j'ai trouvé le probleme qui était à cette ligne float capteurMesureTemp(byte adressecapteur) à remplacer par float capteurMesureTemp(byte adressecapteur[8])

Affaire classée :-)

Go Up