Esp32 - Scrolling des données sur Oled 0.96"

scrolling


Faire défiler des informations de droite à gauche sur un Oled 0.96" (Scrolling)

Scrolling de la température et de l'humidité

srcolling-temperature


Nous utilisons le code d'affichage de la température et de l'humidité mesuré avec un DHT22 et un ESP32 sur l'afficheur Oled 0.96".


Voir ESP32 - DHT22 - Oled 0.96" - Afficher la température


La température et l'humidité défilent sur l'afficheur Oled 0.96" de droite à gauche

(Le câblage est inchangé)


Modification du code *.ino





  • Le code en tout petit est inchangé ......
  • #include <Wire.h>               // Communication avec les périphérique I2C
  • #include <Adafruit_GFX.h>       // Fonction graphique pour Oled
  • #include <Adafruit_SSD1306.h>   // Driver pour ssd1306
  • #include <Adafruit_Sensor.h>    // Drivers pour capteurs Adafruit
  • #include <DHT.h>                // Capteur DHT11-22 - Température - Humidité
  • #define SCREEN_WIDTH 128        // OLED largeur en pixels
  • #define SCREEN_HEIGHT 64        // OLED hauteur en pixels
  • #define DHTPIN 5                // DHT22 en D5
  • //#define DHTTYPE    DHT11      // DHT 11
  • #define DHTTYPE    DHT22        // DHT 22 (AM2302)
  • //#define DHTTYPE    DHT21      // DHT 21 (AM2301)
  • DHT dht(DHTPIN, DHTTYPE);       // Configuration du DHTxx
  • // Declaration SSD1306 Oled I2C (SDA, SCL pins)
  • Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);  // SDA en D21 et SCL en D22

  • int x;                                                                                     // position du curseur sur la ligne défilante
  • int minX;                                                                              // position minimale du curseur,fonction de la longueur du message
  • char longueurAffichage[]="123456789012345678";       // Longueur max de l'affichage car Température + Humidité = 18 caractères

  • void setup() {
  •   Serial.begin(115200);
  •   dht.begin();  // Activation du DHTxx
  •   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Detection d'erreur d'adresse Oled - Address 0x3D for 128x64
  •     Serial.println(F("SSD1306 allocation failed"));
  •     for(;;);
  •   }
  •   delay(200);

  •   display.clearDisplay();                                      // efface l'afficheur
  •   display.setTextColor(WHITE);                          // texte en blanc sur fond noir
  •   display.setTextWrap(false);                             // inhibe le retour a la ligne sur OLED
  •   display.display();                                              // met a jour l'affichage
  •   x = display.width();                                          // initialise le curseur a longueur OLED en pixel
  •     minX = -12 * strlen(longueurAffichage);     // 12 = 6 pixels/charactere * text size 2

  •   delay(200);
  • }

  • void loop() {
  •   float t = dht.readTemperature();        // Lecture temperature
  •   float h = dht.readHumidity();           // Lecture humidité
  •   if (isnan(h) || isnan(t)) {
  •     Serial.println("Failed to read from DHT sensor!");  // Detection erreur du DHT
  •   }

  •   display.clearDisplay();                                  // efface l'afficheur
  •   display.setCursor(0,7);                                 // positionne le curseur 7eme ligne de pixel
  •   display.setTextSize(1);                                   // taille 1 pour le texte statique
  •   display.print("Temperature  Humidite");      // Texte "Température  Humidité"

  • // Affichage temperature
  •   display.setTextSize(2);                  // taille 2 pour le texte défilant
  •   display.setCursor(x,20);                // position curseur variable (x) en longueur, 20 pixels en hauteur
  •   display.print(t);                             // texte défilant - Affichage de la temperature
  •   display.print(" ");                          // Affichage d'un espace
  •   display.cp437(true);                    // Driver cp437 pour ° Signe de temperature Celcius
  •   display.setTextSize(1);                 // Taille 1 pour le °
  •   display.write(167);                       // Code ascii 167 = °
  •   display.setTextSize(2);                // Taille 2 pour le C
  •   display.print("C  ");                      // Affichage du caractere C + 2 espaces

  • // Affichage humidite
  •   display.print(h);                         // Affichage de l'huidité
  •   display.print(" %");                    // Affichage du caractere %
  •   display.display();                      // met a jour l'affichage

  •   x=x-8;                                                 // vitesse du défilement: 1 lent, 10 rapide etc.. (Valeur initiale=4)
  •   if(x < minX) x= display.width();        // reinitialisation curseur en x a chaque défilement complet

  • }


Personnaliser

Google Analytics

Google Analytics est un service utilisé sur notre site Web qui permet de suivre, de signaler le trafic et de mesurer la manière dont les utilisateurs interagissent avec le contenu de notre site Web afin de l’améliorer et de fournir de meilleurs services.

Facebook

Notre site Web vous permet d’aimer ou de partager son contenu sur le réseau social Facebook. En l'utilisant, vous acceptez les règles de confidentialité de Facebook: https://www.facebook.com/policy/cookies/

Twitter

Les tweets intégrés et les services de partage de Twitter sont utilisés sur notre site Web. En activant et utilisant ceux-ci, vous acceptez la politique de confidentialité de Twitter: https://help.twitter.com/fr/rules-and-policies/twitter-cookies