Code Arduino et vidéo pour écran OLED SSD1306 128 x 32 avec I2C

Code Arduino et vidéo pour écran OLED SSD1306 128 x 32 avec I2C

Dans ce tutoriel, nous allons explorer comment utiliser l'écran OLED SSD1306 128 x 32 avec communication I2C sur un Arduino. L'objectif est d'afficher divers éléments tels que du texte, des rectangles et des valeurs dynamiques comme la tension et la température sur l'écran. Cette configuration est idéale pour des projets nécessitant une solution d'affichage compacte et efficace.

SSD1306 OLED 128x32

Nous passerons en revue les composants matériels nécessaires, les instructions de câblage et le code Arduino pour tout mettre en marche. Pour un guide visuel, veillez à consulter la vidéo accompagnant ce tutoriel (dans la vidéo à 00:00).

Matériel expliqué

Les composants clés de ce projet comprennent l'écran OLED SSD1306, un écran à faible consommation qui utilise la communication I2C pour un interfaçage facile. L'écran offre une résolution de 128 x 32 pixels, ce qui le rend adapté à l'affichage de texte et de graphiques simples.

Pour contrôler l'affichage, nous utiliserons la carte Arduino, qui enverra des commandes et des données via I2C. L'Arduino gère la logique d'affichage des informations en utilisant des bibliothèques telles queAdafruit_GFXetAdafruit_SSD1306. Ces bibliothèques simplifient le processus de communication et permettent de dessiner facilement des formes et du texte.

Détails de la fiche technique

FabricantAdafruit
Numéro de pièceSSD1306
Tension logique/E/S3.3 - 5 V
Tension d'alimentation3.3 - 5 V
Consommation actuelle~20 mA (typique)
Résolution d'affichage128 x 32 pixels
InterfaceI2C
Dimensions128 x 32 mm
Notes / variantesDisponible en plusieurs tailles et interfaces
  • Vérifiez l'adresse I2C, généralement 0x3C pour les écrans OLED.
  • Assurez-vous que l'alimentation est adéquate pour éviter tout dommage.
  • Utilisez des résistances pull-up pour les lignes SDA et SCL si nécessaire.
  • Gardez le câblage court pour réduire le bruit sur le signal I2C.
  • Prenez en compte la dissipation thermique si vous alimentez plusieurs modules.

Instructions de câblage

Arduino wiring for SSD1306 OLED 128x32
Arduino wiring for SSD1306 OLED 128x32

Pour câbler l'écran OLED SSD1306, connectez d'abord la broche VCC de l'écran à la sortie 5V de l'Arduino. Ensuite, connectez la broche GND à l'une des broches de masse de l'Arduino. Pour la communication I2C, reliez la broche SDA de l'écran à la broche SDA de l'Arduino, qui est A4 pour l'UNO. Puis, reliez la broche SCL de l'écran à la broche SCL de l'Arduino, qui est A5 pour l'UNO. Si vous utilisez un autre modèle d'Arduino, consultez la correspondance des broches spécifique pour SDA et SCL.

Pour des composants supplémentaires, si vous avez une LED que vous souhaitez contrôler, connectez-la à la broche 9 via une résistance de 330 ohms. Assurez-vous de connecter l'autre extrémité de la résistance à l'anode de la LED, tandis que la cathode doit être reliée à la masse. Ce montage permettra à la LED de s'allumer lorsque la broche 9 est activée.

Exemples de code et tutoriel pas à pas

Dans le code Arduino, nous commençons par inclure les bibliothèques nécessaires pour l'affichage OLED. Un identifiant clé estdisplay, qui est une instance deAdafruit_SSD1306classe. L'affichage est initialisé dans lesetup()fonction, où nous effaçons également l'affichage pour préparer le dessin.

SSD1306 OLED 128x32
void setup() {
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(2000);
  display.clearDisplay(); 
}

Dans leloop()fonction, nous définissons une variable de type chaînevStringpour contenir la valeur de la tension, qui est mise à jour dynamiquement. LerobojaxText()La fonction est utilisée pour afficher du texte à l'écran aux coordonnées spécifiées.

void loop() {
  String vString = String(count, 3);
  display.clearDisplay();
  robojaxText("Voltage:          ", 4, 3, 1, false);
  robojaxText(vString, 72, 3, 1, false);
  display.display();
  count += 0.173;
  delay(2000); 
}

LerobojaxText()Cette fonction est cruciale pour le positionnement et l'affichage du texte. Elle prend des paramètres pour la chaîne de texte, les coordonnées x et y, la taille du texte et un booléen pour déterminer si l'affichage doit être mis à jour immédiatement.

void robojaxText(String text, int x, int y, int size, boolean d) {
  display.setTextSize(size);
  display.setTextColor(WHITE);
  display.setCursor(x, y);
  display.println(text);
  if(d) {
    display.display();
  }
}

Cette fonction définit la taille du texte, la couleur et la position du curseur avant d'afficher le texte. N'oubliez pas de regarder la vidéo pour une explication complète du code (dans la vidéo à 10:00).

Démonstration / À quoi s'attendre

Lorsque le code est téléversé sur l'Arduino, l'affichage OLED devrait afficher les valeurs de tension, de température et de capacité se mettant à jour dynamiquement toutes les deux secondes. Vous devriez également voir un rectangle tracé autour des éléments de texte. Si l'affichage ne montre rien, assurez-vous que les connexions sont correctes et que l'adresse I2C correspond à celle spécifiée dans le code.

Horodatages vidéo

  • 00:00- Introduction au projet
  • 02:00- Instructions de câblage
  • 05:00- Revue du code
  • 10:00- Démonstration de la sortie

Images

SSD1306 OLED 128x32
SSD1306 OLED 128x32
SSD1306 OLED 128x32
SSD1306 OLED 128x32
SSD1306 OLED 128x32
SSD1306 OLED 128x32
SSD1306 OLED 128x32
SSD1306 OLED 128x32
Arduino wiring for SSD1306 OLED 128x32
Arduino wiring for SSD1306 OLED 128x32
83-Arduino code and video for SSD1306 OLED 128 x 32 display with I2C
Langue: C++
Copié !

Ce dont vous pourriez avoir besoin

Ressources et références

Fichiers📁

Aucun fichier disponible.