Go Down

Topic: [RESOLU] invalid conversion from 'byte*' to 'byte' (Read 313 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 : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy