|
V - Scénarios pour le DS18B20
|
V - Scénarios pour circuit(s) DS18B20
V-a Programme permettant de scruter le bus OneWire à la recherche de DS18x20
V-b Programme permettant de lire la température du DS18B20
|
#include <OneWire.h> // Inclusion de la librairie OneWire #define DS18B20 0x28 // Adresse 1-Wire du DS18B20 #define DS18S20 0x10 // Adresse 1-Wire du DS18S20 #define BROCHE_ONEWIRE 10 // Broche utilisée pour le bus 1-Wire OneWire ds(BROCHE_ONEWIRE); // Création de l'objet OneWire ds // Fonction récupérant la température depuis le DS18B20 // Retourne true si tout va bien, ou false en cas d'erreur boolean getTemperature(float *temp){ byte data[9], addr[8]; // data : Données lues depuis le scratchpad // addr : adresse du module 1-Wire détecté if (!ds.search(addr)) { // Recherche un module 1-Wire ds.reset_search(); // Réinitialise la recherche de module return false; // Retourne une erreur } if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l'adresse a été correctement reçue return false; // Si le message est corrompu on retourne une erreur if (addr[0] != DS18B20) { // Vérifie qu'il s'agit bien d'un DS18B20 return false; // Si ce n'est pas le cas on retourne une erreur }
ds.reset(); // On reset le bus 1-Wire ds.select(addr); // On sélectionne le DS18B20 ds.write(0x44, 1); // On lance une prise de mesure de température delay(800); // Et on attend la fin de la mesure > 750ms ds.reset(); // On reset le bus 1-Wire ds.select(addr); // On sélectionne le DS18B20 ds.write(0xBE); // On envoie une demande de lecture du scratchpad for (byte i = 0; i < 9; i++) // On lit le scratchpad data[i] = ds.read(); // Et on stock les octets reçus // Calcul de la température en degré Celsius *temp = ((data[1] << 8) | data[0]) * 0.0625; // Pas d'erreur return true; } // setup() void setup() { Serial.begin(9600); // Initialisation du port série } // loop() void loop() { float temp; // Lit la température ambiante à ~1Hz if(getTemperature(&temp)) { // Affiche la température Serial.print("Température: "); Serial.print(temp); Serial.write(176); // caractère ° Serial.write('C'); // Celsius Serial.println(); } }
|
|
le programme de lecture du DS18B20
|
Créé avec HelpNDoc Personal Edition: Créez sans effort une documentation professionnelle avec l'interface utilisateur propre de HelpNDoc