Pages: [1]   Go Down
Author Topic: [RESOLU] invalid conversion from 'byte*' to 'byte'  (Read 249 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 127
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
// --- 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;
}
« Last Edit: June 09, 2013, 01:52:15 pm by PITP2 » Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3642
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A quelle ligne ça aiderait ...
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 127
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 :-)
Logged

Pages: [1]   Go Up
Jump to: