L’écran OLED 0.96″ est un afficheur graphique miniature ultra-lumineux d’une résolution de 128 x 64 pixels. Contrairement aux écrans LCD classiques, la technologie OLED (Organic Light-Emitting Diode) ne nécessite pas de rétroéclairage : chaque pixel produit sa propre lumière. Cela permet d’obtenir un contraste exceptionnel (les noirs sont parfaits) et une excellente lisibilité, même sous un angle prononcé. Il utilise généralement le protocole de communication I2C, ne nécessitant que deux fils de données pour fonctionner. [1, 2, 3, 4, 5]
2. Pourquoi choisir cet écran ?
- Interface utilisateur claire : Il permet d’afficher des textes, des valeurs numériques complexes, des graphiques dynamiques ou de petites icônes, rendant le projet totalement autonome (plus besoin de connecter l’ESP32 à un ordinateur pour lire les données). [1, 2]
- Consommation d’énergie très faible : Comme seuls les pixels allumés consomment du courant, cet écran est idéal pour les projets alimentés par batterie. [1, 2]
- Câblage minimaliste : Grâce au bus I2C, il partage les mêmes broches de communication que d’autres capteurs, ce qui économise les précieuses broches d’entrées/sorties de l’ESP32.
- Format compact : Sa taille minuscule s’intègre parfaitement sur la plaquette d’essai MB-102 et dans les petits boîtiers imprimés en 3D. #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <ESP32Servo.h> #define LARGEUR_ECRAN 128 // Largeur de l’écran OLED, en pixels #define HAUTEUR_ECRAN 64 // Hauteur de l’écran OLED, en pixels // Déclaration de l’écran OLED connecté en I2C (broche Reset non utilisée ici) Adafruit_SSD1306 ecran(LARGEUR_ECRAN, HAUTEUR_ECRAN, &Wire, –1); Servo monServo; const int brocheServo = 13; // Signal du servo connecté sur le GPIO 13 void setup() { Serial.begin(115200); // Initialisation de l’écran OLED à l’adresse I2C standard 0x3C if(!ecran.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F(« Erreur : Écran OLED non détecté ! »)); for(;;); // Bloque le programme en cas d’échec } // Configuration initiale de l’écran ecran.clearDisplay(); ecran.setTextSize(1); // Taille du texte (1 = petite, 2 = moyenne) ecran.setTextColor(SSD1306_WHITE); // Couleur du texte ecran.setCursor(10, 20); ecran.println(« SYSTEME INITIALISE »); ecran.display(); delay(2000); // Configuration du servomoteur ESP32PWM::allocateTimer(0); monServo.setPeriodHertz(50); monServo.attach(brocheServo, 500, 2400); } void loop() { // Cycle de rotation de 0 à 180 degrés for (int angle = 0; angle <= 180; angle += 45) { monServo.write(angle); // Mise à jour de l’affichage sur l’OLED ecran.clearDisplay(); // Titre encadré ecran.setTextSize(1); ecran.setCursor(0, 0); ecran.println(« — MONITORING —« ); // Affichage de l’état du moteur ecran.setTextSize(2); // Texte plus grand pour l’angle ecran.setCursor(0, 25); ecran.print(« Angle: « ); ecran.print(angle); ecran.println( » deg »); // Envoi des données à l’écran physique ecran.display(); delay(1500); // Laisse le temps de lire l’affichage } }







Avis
Il n’y a pas encore d’avis.