Alors voilà tout d'abord je precise que je débute totalement en programmation arduino.
Je demande votre aide pour mon projet que j'ai a réaliser pour le BAC
je vous explique mon probleme je doit faire un relèvé de temperature puis l'envoyer sur un site web jusque la tout va bien j'ai mi du temps a trouvé le bout de code pour le relevé de temperature mais maintenant que j'en est un qui marche j'aimerais le comprendre c'est pour sa que je vous demande de l'aide pour m'aidé a comprendre ce programme qui pour moi est du chinois
Merci d'avance
PS; j'ai essayer de lire les commentaires mais je n'ai pas compris plus !
//------- Fonction d'initialisation du capteur de temperature (eau) --------------
void capteurInit(void)
// fonction qui ne reçoit rien et ne renvoie rien
{
// XXXXXXXXXXXXXXXXXXXXXX Détection du capteur présent sur la broche XXXXXXXXXXXXXXXXXXXXXXX
Serial.println("**** Detection du capteur **** ");
while (capteur.search(adresse)== false) // tant qu'aucun nouveau capteur est détecté
{
// la fonction search renvoie la valeur FAUX si aucun élément 1-wire est trouvé.
Serial.println("Aucun capteur 1-wire present sur la broche ! "); // affiche message + saut de ligne
delay (1000); // pause 1 seconde
}
//la suite est exécutée seulement si un capteur est détecté
// la fonction search renvoie la valeur VRAI si un élément 1-wire est trouvé.
// Stocke son code d'adresse 16 bits dans le tableau adresse[8]
// adresse envoyé à la fonction correspond à l'adresse de début du tableau adresse[8] déclaré ...
Serial.print ("1 capteur 1-wire present avec code adresse 64 bits : ");
//--- affichage des 64 bits d'adresse au format hexadécimal
for(int i = 0; i < 8; i++) { // l'adresse renvoyée par la fonction search est stockée sur 8 octets
if (adresse*<16) Serial.print('0'); // pour affichage des O poids fort au format hexadécimal*
_ Serial.print(adresse*, HEX); // affiche 1 à 1 les 8 octets du tableau adresse au format hexadécimal*_
* Serial.print(" ");*
* }*
* Serial.println();*
* //---- test du type de capteur ----*
* // le type du capteur est donné par le 1er octet du code adresse 64 bits*
* // Valeur 0x28 pour capteur type DS18B20, 0x10 pour type DS18S20, 0x22 pour type DS1820*
* if (adresse[0]==0x28)*
* {*
* Serial.println ("Type du capteur present : Capteur temperature DS18B20.");*
* }*
* else*
* {*
* Serial.println ("Le capteur present n'est pas un capteur de temperature DS18B20.");*
* }*
* //----- contrôle du code CRC ----*
* // le dernier octet de l'adresse 64bits est un code de contrôle CRC*
* // à l'aide de la fonction crc8 on peut vérifier si ce code est valide*
* if (capteur.crc8( adresse, 7) == adresse[7]) // vérification validité code CRC de l'adresse 64 bits*
* // le code CRC de l'adresse 64 bits est le 8ème octet de l'adresse (index 7 du tableau)*
* {*
* Serial.println ("Verification du code CRC de l'adresse 64 bits de ce capteur : VALIDE !");*
* }*
* else*
* {*
* Serial.println ("Verification du code CRC de l'adresse 64 bits de ce capteur : NON VALIDE !"); *
* }*
* //------- message final détection ----*
* Serial.println("----- fin de la recherche du capteur ----");*
* Serial.println(""); *
}
//----------- fin de la fonction d'initialisation du capteur ----------
float capteurMesureTemp(void)
{ //fonction qui renvoie résultat float et ne reçoit rien
* //-------- 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(adresse); // 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(adresse); // 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 = 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;
return (tempetf);
}_