Afficher la température DS18B20 sur ecran OLED 0.91 avec un Arduino Uno
Description :
Le DS18B20 fournit des mesures numériques précises, tandis que l’OLED affiche clairement la température, offrant un retour visuel instantané. Cette configuration est idéale pour des applications de surveillance thermique, des stations météo miniatures, des incubateurs, ou tout projet nécessitant un affichage compact et précis de la température.
Projet permettant de mesurer la température ambiante avec un capteur DS18B20 et de l’afficher en temps réel sur un écran OLED 0.91″ connecté à un Arduino Uno.
Le programme Arduino lit régulièrement les données du capteur, convertit les valeurs en degrés Celsius, et met à jour l’écran OLED sans clignotement, assurant une visualisation fluide et continue.
Prérequis :
- 1 x Carte Arduino Uno
- 1 x DS18B20
- 1 x résistance 4.7KΩ
- 1 x 0.91 inch OLED I2C Display 128 x 32 Pixels
- 1 x Breadboard
- Fils de connexion
Version IDE :
- Arduino IDE 2.3.5
Bibliothèque :
- OneWire.h (version: 2.3.8 )
- DallasTemperature.h (version: 4.0.3)
- Adafruit_GFX.h (version: 1.12.1)
- Adafruit_SSD1306.h (version: 2.5.14)
- Adafruit BusIO (version: 1.17.1)
Vidéo de démonstration :
Schéma de câblage :


Code :
// Inclure les bibliothèques dont nous avons besoin
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &Wire);
// Le câble de données est branché sur le port 7 de l'Arduino
#define ONE_WIRE_BUS 7
// Configurer une instance oneWire pour communiquer avec tous les appareils OneWire
OneWire oneWire(ONE_WIRE_BUS);
// Transmettez notre référence oneWire à Dallas Temperature.
DallasTemperature sensors(&oneWire);
/*
* Fonction de configuration. Nous démarrons uniquement les capteurs ici.
*/
void setup(void) {
// démarrer le port série
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Démarrer les bibliothèques
sensors.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C for 128x32
display.display();
delay(1000);
// Effacez le tampon.
display.clearDisplay();
display.display();
//Défini la couleur du texte
display.setTextColor(WHITE);
}
/*
*Fonction principale, obtenir et afficher la température
*/
void loop(void) {
// appelez sensors.requestTemperatures() pour émettre une demande de
// température globale à tous les périphériques du bus
Serial.print("Demander des températures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("Fait");
delay(1500);
// Après avoir obtenu les températures, nous pouvons les imprimer ici.
// Nous utilisons la fonction ByIndex et, à titre d'exemple, nous obtenons la température du premier capteur uniquement.
float tempC = sensors.getTempCByIndex(0);
// Vérifiez si la lecture a réussi
if (tempC != DEVICE_DISCONNECTED_C) {
Serial.print("Température pour l appareil 1 (index 0) est: ");
Serial.println(tempC);
Serial.println("");
} else {
Serial.println("Erreur : impossible de lire les données de température");
Serial.println("");
}
// On imprime les infos sur écran OLED
display.clearDisplay();
//Défini la taille du texte
display.setTextSize(1);
//Défini la position du texte
display.setCursor(0, 0);
display.println("Temperature :");
display.setCursor(0, 12);
display.setTextSize(2);
display.print(tempC);
display.print(char(247));
display.print("C");
display.display();
}
