Bonjour Brumos,
J’ai un exemple pour Arduino :
/* Test des Sondes DS18B20 sur la Pin 6
Modif JNM du 17/08/2017
*/
#include <OneWire.h>
#include <DallasTemperature.h>
byte OneWirePin = 6; // sondes DS18B20 sur pin 6
OneWire oneWire(OneWirePin); // bus pour com avec les sondes
DallasTemperature sensors(&oneWire);
byte addr[8]; // pour reconnaissance adresses des sondes
// Déclaration des variables des sondes de temperature
float temp[10];
byte nbrSondes = 0; // 0 sonde au démarrage
// Relever les adresses des Sondes et les mettre dans le tableau
DeviceAddress Sonde0 = { 0x28, 0xFF, 0x2A, 0x85, 0xA6, 0x16, 0x03, 0xD6 }; //adresse propre à chaque sonde
DeviceAddress Sonde1 = { 0x28, 0xFF, 0x46, 0xA3, 0xA5, 0x16, 0x05, 0xA6 }; //
DeviceAddress Sonde2 = { 0x28, 0xFF, 0x05, 0x25, 0xA6, 0x16, 0x04, 0x6B }; //
DeviceAddress Sonde3 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde4 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde5 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde6 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde7 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde8 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde9 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
// Initialisation
void setup()
{
Serial.begin(9600);
sensors.begin();
// Recherche le nombres de sondes disponible
nbrSondes = sensors.getDeviceCount();
Serial.println();
Serial.print(« Nombre de capteurs trouves sur le BUS = « );
Serial.println(nbrSondes);
Serial.println( » aux adresses: « );
for (byte s = 0; s <= nbrSondes; s++)
{
if (!oneWire.search(addr))
{
Serial.println(« Pas d’autres sondes trouvées. »);
oneWire.reset_search();
delay(250);
return;
}
Serial.print(« Sonde Numéro : « );
Serial.print(s);
Serial.print( » à l’adresse { »);
for (byte i = 0; i < 8; i++)
{
Serial.print(« 0x »);
Serial.print(addr[i], HEX);
if (i < 7)
{
Serial.print( », « );
}
}
Serial.println( »} »);
}
// Fixe la résolution des capteurs à 10 bits (choix entre 9 et 12)
sensors.setResolution(Sonde0, 10);
sensors.setResolution(Sonde1, 10);
sensors.setResolution(Sonde2, 10);
sensors.setResolution(Sonde3, 10);
sensors.setResolution(Sonde4, 10);
sensors.setResolution(Sonde5, 10);
sensors.setResolution(Sonde6, 10);
sensors.setResolution(Sonde7, 10);
sensors.setResolution(Sonde8, 10);
sensors.setResolution(Sonde9, 10);
Serial.println(« Fin du set up. »);
}
// Programme principale
void loop()
{
Serial.println();
Serial.println(« Lecture des temperatures en cours… »);
sensors.requestTemperatures();
temp[0] = printTemperature(Sonde0, 0);
temp[1] = printTemperature(Sonde1, 1);
temp[2] = printTemperature(Sonde2, 2);
temp[3] = printTemperature(Sonde3, 3);
temp[4] = printTemperature(Sonde4, 4);
temp[5] = printTemperature(Sonde5, 5);
temp[6] = printTemperature(Sonde6, 6);
temp[7] = printTemperature(Sonde7, 7);
temp[8] = printTemperature(Sonde8, 8);
temp[9] = printTemperature(Sonde9, 9);
delay(5000);
}
// Affichage des Températures
float printTemperature(DeviceAddress deviceAddress, byte cptSondes)
{
float tempC = sensors.getTempC(deviceAddress);//lecture des sondes
if (tempC == -127.00) //Vérifications si erreurs
{
if (cptSondes < nbrSondes)
{
Serial.print("Problème de sonde numéro : ");
Serial.println(cptSondes);
}
tempC = 0;
}
else //affichage temperature
{
Serial.print(« Sonde numéro : « );
Serial.print(cptSondes);
Serial.print( » mésuré à : « );
Serial.print(tempC);
Serial.println( » °C. »);
}
return tempC;
}
Celui-ci permet de lire 10 sondes…
On voit les adresse sur 64 bits.
Voir la doc du DS18B20 (datasheet) ou bien sur les sites Arduino qui explique bien mieux que le PI 
A bientôt,
Jean-Nono