Comment connecter l'écran OLED I2C à ARDUINO

Introduction : Introduction à l'écran OLED I2C 128*64 / 128*32.
Comment connecter l'écran OLED I2C à ARDUINO

Bonjour! Étant un amateur passionné d'électronique, je suis sûr que tout ce que nous faisons - des jouets électroniques, des produits faits maison ou de grands projets - est tout cela par curiosité et paresse. La curiosité s'efforce de comprendre et d'appréhender le vaste, l'inconnu, de comprendre comment cela fonctionne là-bas, ce qu'il fait, comment il se déplace. Et la paresse invente quelque chose à inventer, pour ne pas se lever, ne pas s'approcher, ne pas soulever, ne pas se salir ou quoi que ce soit d'autre d'important.

Puisqu'il vaut mieux voir des informations que comprendre ce qui est sur le point de se passer dans notre appareil, ou ce qui s'est déjà produit, ou ce qui se passe, nous voudrons certainement recevoir ces informations les plus utiles de nos microcontrôleurs, capteurs ou autres appareils. Et dans tous les cas, je souhaite recevoir des messages, tels que des questions, des avertissements, des rappels, des émoticônes, des étoiles, des cœurs, etc.

Pour ceux qui ont également un désir similaire, voici un petit guide pour connecter et tester des écrans OLED petits et peu coûteux.
Nous parlerons ensuite de l'un des modèles d'écran OLED largement disponibles pour les radioamateurs, contrôlés par la puce SSD1306, avec une taille d'écran de 0,96 pouces et une résolution de 128*64 ou 128*32 pixels. Ces écrans sont idéaux pour les petites conceptions de radio amateur et les projets faits maison.
Comment connecter l'écran OLED I2C à ARDUINO

Étape 1 : Concepts de base


Nous le connecterons à Arduino UNO / NANO, et nous le programmerons également via Arduino.
  • OLED est une diode électroluminescente organique, c'est-à-dire un dispositif semi-conducteur fabriqué à partir de composés organiques qui commence à émettre de la lumière lorsqu'un courant électrique le traverse.
  • ARDUINO est une plateforme de formation et de systèmes d'automatisation des bâtiments et de robotique.
  • ArduinoIDE - environnement de développement. Il s'agit d'un programme de programmation Arduino gratuit.
  • I2C – Circuits inter-intégrés, ligne de communication inter-puces.
  • Sketch, alias code, alias programme – terminologie Arduino.

Suivez les instructions pour comprendre comment connecter et configurer correctement l'écran OLED à l'Arduino et comment afficher un message personnalisé sur son écran.
Nous faisons tout étape par étape.

Étape 2 : Accessoires


Nous n’avons besoin que de quatre choses :
  • 1. L'écran OLED lui-même mesure 0,96" (vous pouvez l'acheter sur Aliexpress ou Ebay, c'est long, mais pas cher !).
  • 2. Arduino UNO / Nano (au même endroit que l'écran).
  • 3. Fils de connexion (ibid.).
  • 4. Ordinateur ou ordinateur portable avec ArduinoIDE installé.

Comment connecter l'écran OLED I2C à ARDUINO

En général, acheter des pièces pour divers projets sur Aliexpress et Ebay est une chose très cool, pendant que vous travaillez sur un projet, des pièces pour un autre sont déjà en route. L'essentiel est de ne pas oublier de passer commande.

Étape 3 : connexion de l'écran


L'écran est contrôlé par une puce SSD1306, qui prend en charge cinq protocoles de communication, dont I2C. Les données utilisant ce protocole sont transmises sur seulement deux fils, et moins il y a de fils dans le boîtier, mieux c'est, donc cela nous convient plutôt bien.Mais! Il existe des modules avec le protocole SPI et même avec la commutation de protocole, alors soyez prudent lors de l'achat de ce module.
Comment connecter l'écran OLED I2C à ARDUINO

Épingles utilisées :
Écran OLED - SCL/SCK (horloge) et SDA (données), puissance « Plus » (VCC) et puissance « Moins » (GND).
Comment connecter l'écran OLED I2C à ARDUINO

Épingles utilisées :
Arduino UNO - SCL/SCK sur A5 et SSD sur A4, alimentation « Plus » (+5V) et alimentation « Moins » (GND).
Connexion de l'écran à Arduino :
  • Vcc-5V
  • Masse - Masse
  • SDA-A4
  • SCL-A5

Comment connecter l'écran OLED I2C à ARDUINO

Étape 4 : Scanner I2C


Chaque appareil sur le bus I2C a une adresse hexadécimale, elle ne peut pas être modifiée, elle est câblée, tout fabricant responsable doit l'indiquer quelque part sur le boîtier ou dans la notice. Il existe des modules avec des commutateurs et des cavaliers qui peuvent être utilisés pour modifier l'adresse, mais... si les appareils sont ridiculement bon marché, le fabricant ne prendra peut-être pas la peine de s'occuper d'un tel détail, vous devrez donc le déterminer vous-même.

Au total, jusqu'à 127 adresses peuvent être utilisées sur le bus : 119 pour les appareils et 8 adresses de service. La communication s'effectue à ces adresses. Il y en a un principal, alias Maître, et il y a un esclave, alias Esclave - les Maîtres demandent, les esclaves répondent, tout est simple.
Étant donné que notre écran OLED utilise le protocole de communication I2C et que l'adresse peut ne pas être spécifiée, nous essaierons de trouver nous-mêmes cette adresse.

Vous pouvez le faire en téléchargeant un court croquis sur votre carte Arduino avec l'OLED connecté. MAIS!
Ne vous précipitez pas pour télécharger le croquis sur Arduino tout de suite ! Téléchargeons d'abord les "drivers", c'est-à-dire connectons les bibliothèques, et pour ce faire, nous passerons immédiatement à « l'étape n°5 », puis reviendrons et continuerons.

Étape 4 : suite :


Téléchargez CODE Finder_I2C_Hex_Address.ino, téléchargez-le sur Arduino.
Ouvrez « Port Monitor », réglez la vitesse sur 9600 et si tout est correctement connecté, le programme affichera l'adresse de l'appareil, dans mon cas OLED avec l'adresse 0x3F.
Comment connecter l'écran OLED I2C à ARDUINO

Étape 5 : Téléchargez et connectez les bibliothèques


Pour que tout fonctionne correctement et que vous n'ayez pas à réinventer la roue, vous devez connecter quelques librairies à l'environnement ArduinoIDE, à savoir : ADAFRUIT GFX et ADAFRUIT SSD1306, elles sont nécessaires pour qu'Arduino puisse communiquer de manière indépendante avec l'écran OLED.
Vous pouvez inclure ces bibliothèques en suivant ces étapes.
  • 1. Dans ArduinoIDE, accédez au menu Sketch.
  • 2. Sélectionnez « Inclure les bibliothèques ».
  • 3.Sélectionnez « Gérer les bibliothèques ».
  • 4. Recherchez ADAFRUIT GFX et installez-les.
  • 5. Recherchez ADAFRUIT SSD1306 et installez-les.

Avec les dernières versions des bibliothèques, mon affichage fonctionnait de travers, cela peut bien sûr être dû à la courbure de mes mains, mais après avoir installé les toutes premières versions de ces bibliothèques, tout a commencé à paraître fluide et beau. Pour une raison quelconque, les lignes de Pouchkine me viennent à l’esprit :
...et de l'expérience, fils d'erreurs difficiles,
et génie, ami des paradoxes.

Une autre façon d'installer des bibliothèques consiste à rechercher, télécharger et installer ces bibliothèques vous-même.
Pour l'exemple de Github :
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

Ce sont les mêmes bibliothèques Adafruit, mais des bibliothèques similaires peuvent être facilement recherchées dans les moteurs de recherche, à la demande d'OLED I2C. De nombreux passionnés écrivent des bibliothèques « pour eux-mêmes » et les publient ensuite sur le Web. La bibliothèque à utiliser dépend de vous.
Pour que l'écran affiche les lettres russes, des bibliothèques spéciales sont également nécessaires, mais il s'agit d'un sujet distinct pour un article séparé.
Une fois les bibliothèques installées, vous pouvez revenir à l'étape 4 et enfin connaître l'adresse hexadécimale de votre écran.

Étape 6 : Test d'affichage


Pour vérifier si tout fonctionne comme prévu, exécutez l'exemple de test d'ArduinoIDE.
Pour ça:
Allez dans FICHIER > EXEMPLES > SSD 1306 > Sélectionnez 128x64 i2c
Si vous obtenez « Erreur », essayez de sélectionner SSD 1306 > 128x32 i2c.
Si « Erreur » se produit à nouveau, essayez de modifier l'adresse I2C sur la ligne 61 du code de démonstration et remplacez-la par l'adresse de votre écran que vous avez déterminée à l'étape 4.
Si l'erreur se reproduit, vous pouvez essayer d'éditer le fichier Adafruit_SSD1306.h, il se trouve dans le dossier des bibliothèques Arduino.
Comment connecter l'écran OLED I2C à ARDUINO

Ouvrez le fichier Adafruit_SSD1306.h dans un éditeur de texte et recherchez les lignes :
//#définir SSD1306_128_64

#définir SSD1306_128_32

// #définir SSD1306_96_16 

Décommentez la ligne :
#définir SSD1306_128_64. 

Ça devrait ressembler à ça:
#définir SSD1306_128_64

//#définir SSD1306_128_32

// #définir SSD1306_96_16

Si l'erreur se reproduit, vous devez vérifier les connexions correctes.
Une fois le téléchargement terminé, vous verrez une animation de test sur l'écran, ce qui signifie que vous avez configuré avec succès votre écran OLED.

Lorsque vous aurez pleinement apprécié cette animation, vous pourrez passer à l’étape suivante.

Étape 7 : Rédigez votre propre message


Pour écrire votre propre message, créez d'abord une nouvelle esquisse dans l'environnement de programmation ArduinoIDE.
Dans l'en-tête, nous incluons 4 bibliothèques :
#include <SPI.h>

#include <Fil.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Ensuite, nous écrivons le protocole de réinitialisation :
#définir OLED_RESET 4

Affichage Adafruit_SSD1306 (OLED_RESET);

Dans VOID SETUP, nous indiquons l'adresse hexadécimale de notre affichage 0x3C, que nous avons apprise à « l'étape n° 4 ».
Ensuite, nous initialisons l'affichage et l'effacons :
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

Ensuite, dans VOID LOOP, nous écrivons le code principal, c'est-à-dire notre message que nous voulons afficher à l'écran.
Pour ce faire, nous décrivons la taille du texte, la couleur du texte, la position du curseur et enfin, affichons le message à l'aide de la commande println :
display.setTextSize(2);

display.setTextColor(BLANC);

display.setCursor(0,0);

display.println("Bravo!");

display.display();

A la fin n'oublie pas d'écrire afficher.afficherpour que l'image s'affiche sur l'écran, sinon vous obtiendrez un vide.
Si vous avez tout fait correctement, un message apparaîtra sur les écrans.
Comment connecter l'écran OLED I2C à ARDUINO

Voici le CODE Starting_with_Arduino_OLED.ino de notre programme :
code postal [946 b] (téléchargements : 4908)
revenir
Commentaire
  • noeud papillonsourireen riantrougirsouriantdétendu détendupetit sourire satisfait
    yeux_cœurkissing_heartembrasser les yeux fermésrougisoulagésatisfaitsourire
    clin d'œilcoincé_out_tongue_winking_eyeOuvre la bouche et ferme les yeuxsouriantembrassercoincé_out_tonguedormir
    inquietrenfrognéangoissébouche ouvertegrimaçantconfusétouffé
    sans expressionpas amusésweat_smiletranspirerdéçu_soulagéfatiguépassif
    déçuconfuscraintifsueur froidepersévérerpleurersanglot
    joieétonnécriervisage_fatiguéen colèreragetriomphe
    somnolentMiammasquedes lunettes de soleilvisage_dizzylutinsouriant_imp
    visage_neutrepas de boucheinnocent
4 moins un =
Commentaires (10)
  1. Tatochka
    #1 Tatochka Invités 14 novembre 2018 21:18
    9
    Merci, mon ami! Ceci est mon premier croquis téléchargé et mon introduction à Arduino. En plus de clignoter Blink))
  2. Alisher
    #2 Alisher Invités 28 juillet 2019 19:35
    8
    Où puis-je télécharger ce code Finder_I2C_Hex_Address.ino ?
    1. Al
      #3 Al Invités 14 août 2019 12:51
      11
      sous l'image il y a un lien "Voici le CODE Starting_with_Arduino_OLED.ino de notre programme :"
  3. Alex
    #4 Alex Invités 13 novembre 2019 20:01
    9
    Pas VOID SETUP ou VOID LOOP, mais void setup(); et boucle vide(); Le langage C est un langage sensible à la casse.
  4. Invité Alex
    #5 Invité Alex Invités 14 janvier 2020 03h00
    6
    >Etape 4 : ... dans mon cas OLED avec adresse 0x3F.
    et puis
    >Dans VOID SETUP... l'adresse de notre affichage 0x3C, que nous avons appris à « l’étape 4 ».
    Comment c'est?
  5. Invité Alex
    #6 Invité Alex Invités 14 janvier 2020 03:10
    9
    Merci! J'ai tout fait selon les instructions de l'Atmega328 Pro Mini et vérifié le 0,96" acheté. Les deux se sont avérés fonctionner. Arduino IDE 1.8.10
  6. Lecteur
    #7 Lecteur Invités 3 mars 2020 21h50
    4
    Merci, instructif, tout fonctionne !
  7. Ildar Xafizov
    #8 Ildar Xafizov Invités 19 avril 2020 19:15
    5
    J'ai une question. Il y a 2 écrans OLED identiques au vôtre sur la photo (deuxième photo). Je n'arrive pas à savoir quels cavaliers utiliser pour changer l'adresse ?
  8. Maxime invité
    #9 Maxime invité Invités 31 octobre 2020 18:53
    11
    Merci pour l'article.Mais j'ai un problème : les pixels des lettres brillent les uns sur les autres et la police est plus grande qu'elle ne devrait l'être. Apparemment, l'Arduino ne reconnaît pas la résolution de l'écran. Si quelqu'un a le même problème, voici comment le résoudre :
    #define SCREEN_WIDTH 128 // Largeur d'affichage OLED, en pixels
    #define SCREEN_HEIGHT 64 // Hauteur de l'affichage OLED, en pixels
    Affichage Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET) ;
  9. Dmitri
    #10 Dmitri Invités 9 mai 2021 19h35
    7
    Merci! Tout n’a pas fonctionné tout de suite. En effet, l'adresse affichée à l'écran était 128*64, non pas 0x3D, mais 0x3C. Et j'ai réorganisé les Bibliothèques « à partir du milieu » des versions. Pas le dernier, parce que... il y avait un message sur la valeur critique de la mémoire (j'ai un Arduino Uno).