- Matériel requis:
- Se familiariser avec les écrans OLED:
- Matériel et connexions:
- Programmation de l'écran OLED SSD1306 pour Arduino:
La plupart d'entre nous connaissent bien l'écran LCD à matrice de points 16 × 2 qui est utilisé dans la plupart des projets pour afficher certaines informations à l'utilisateur. Mais ces écrans LCD ont beaucoup de limites dans ce qu'ils peuvent faire. Dans ce tutoriel, nous allons en apprendre davantage sur les écrans OLED et comment les utiliser Arduino. Il existe de nombreux types d'écrans OLED disponibles sur le marché et il existe de nombreuses façons de les faire fonctionner. Dans ce tutoriel, nous discuterons de ses classifications et de celle qui conviendra le mieux à votre projet.
Matériel requis:
- Module d'affichage OLED 7 broches 128 × 64 (SSD1306)
- Arduino UNO / Nano
- Planche à pain
- Connexion des fils
- Ordinateur / portable
Se familiariser avec les écrans OLED:
Le terme OLED signifie « diode électroluminescente organique», il utilise la même technologie que celle utilisée dans la plupart de nos téléviseurs, mais a moins de pixels que ceux-ci. C'est vraiment amusant d'avoir ces modules d'affichage sympas à interfacer avec l'Arduino car cela donnera à nos projets un aspect cool. Nous avons couvert un article complet sur les écrans OLED et ses types ici.
Nous utilisons un écran OLED Monochrome 7 broches SSD1306 0,96 ”. La raison du choix de cet écran est qu'il peut fonctionner sur trois protocoles de communication différents tels que le mode SPI 3 fils, le mode SPI quatre fils et le mode IIC. Ce tutoriel expliquera comment utiliser le module en mode SPI 4 fils car il s'agit du mode de communication le plus rapide et celui par défaut.
Les broches et leurs fonctions sont expliquées dans le tableau ci-dessous.
Code PIN |
Nom de la broche |
Autres noms |
Usage |
1 |
Gnd |
Sol |
Broche de masse du module |
2 |
Vdd |
Vcc, 5 V |
Broche d'alimentation (3-5V tolérable) |
3 |
SCK |
D0, SCL, CLK |
Agit comme la broche de l'horloge. Utilisé pour I2C et SPI |
4 |
SDA |
D1, MOSI |
Broche de données du module. Utilisé pour IIC et SPI |
5 |
RES |
RST, RÉINITIALISER |
Réinitialise le module (utile pendant SPI) |
6 |
DC |
A0 |
Broche de commande de données. Utilisé pour le protocole SPI |
sept |
CS |
Sélection de puce |
Utile lorsque plus d'un module est utilisé sous le protocole SPI |
Dans ce tutoriel, nous allons simplement faire fonctionner le module en mode SPI 4 fils, nous laisserons le reste pour un autre tutoriel.
La communauté Arduino nous a déjà fourni de nombreuses bibliothèques qui peuvent être directement utilisées pour rendre cela beaucoup plus simple. J'ai essayé quelques bibliothèques et j'ai trouvé que la bibliothèque Adafruit_SSD1306 était très facile à utiliser et contenait une poignée d'options graphiques, nous utiliserons donc la même chose dans ce tutoriel. Mais, si votre projet a une contrainte de mémoire / vitesse, essayez d'utiliser la bibliothèque U8g car elle fonctionne plus rapidement et occupe moins de mémoire programme.
Matériel et connexions:
Le schéma de circuit pour l'interfaçage OLED SSD1306 avec Arduino est vraiment simple et est illustré ci-dessous
Nous avons simplement établi une communication SPI entre le module OLED et Arduino. Étant donné que l'OLED fonctionne sur 3V-5V et consomme très peu d'énergie, il n'a pas besoin d'une alimentation externe. Vous pouvez simplement utiliser des fils pour effectuer la connexion ou utiliser une maquette comme je l'ai utilisée pour qu'il soit facile à expérimenter. La connexion est également répertoriée dans l'histoire ci-dessous
S. Non |
Nom de la broche sur le module OLED |
Nom de la broche sur Arduino |
1 |
Gnd, terre |
Sol |
2 |
Vdd, Vcc, 5 V |
5V |
3 |
SCK, D0, SCL, CLK |
dix |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
sept |
CS, sélection de puce |
12 |
Remarque: vous ne pourrez pas visualiser le rétroéclairage / lueur sur le module OLED simplement en le mettant sous tension. Vous devez le programmer correctement pour remarquer tout changement sur l'écran OLED.
Programmation de l'écran OLED SSD1306 pour Arduino:
Une fois les connexions prêtes, vous pouvez commencer à programmer l'Arduino. Comme indiqué précédemment, nous utiliserons la bibliothèque Adafruit et la bibliothèque GFX pour travailler avec ce module OLED. Suivez les étapes pour tester votre écran OLED.
Étape 1: Téléchargez la bibliothèque Adafruit et la bibliothèque GFX depuis Github en utilisant le lien ci-dessous
- Bibliothèque Adafruit
- Bibliothèque graphique GFX
Étape 2: Vous devriez avoir téléchargé deux fichiers Zip. Maintenant, ajoutez-les à votre Arduino en suivant
Sketch-> Inclure la bibliothèque -> Ajouter une bibliothèque Zip comme indiqué ci-dessous. Sélectionnez ensuite la bibliothèque que nous venons de télécharger. Vous ne pouvez sélectionner qu'une seule bibliothèque à la fois, vous devez donc répéter cette étape.
Étape 3: Lancez l'exemple de programme en sélectionnant Fichier-> Exemples-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino comme indiqué dans l'image ci-dessous.
Étape 4: Dans le programme d'exemple en haut de la ligne 64, ajoutez la ligne «#define SSD1306_LCDHEIGHT 64» comme indiqué dans l'image ci-dessous.
Étape 5: Téléchargez maintenant le programme et vous devriez voir l'écran OLED s'allumer avec l'exemple de code Adafruit par défaut, comme indiqué dans l'image ci-dessous. La vidéo de travail complète est donnée à la fin.
Cet exemple de programme vous montre tous les graphiques possibles qui pourraient être affichés sur l'écran OLED. Ce code devrait vous suffire pour créer des bitmaps, dessiner des lignes / cercles / rectangles, jouer avec des pixels, afficher des caractères et des chaînes avec des polices et des tailles différentes, etc.
Si vous voulez mieux comprendre la bibliothèque et ses fonctions, vous pouvez lire plus loin. Chaque jonque du code est divisé et expliqué à l'aide de lignes de commentaires. Le code complet est donné à la fin de cet article
Affichage et effacement de l'écran:
Ecrire sur un écran OLED, c'est comme écrire sur un tableau noir, nous devons écrire les valeurs puis les nettoyer avant de pouvoir les écraser. Les commandes suivantes sont utilisées pour écrire et effacer l'affichage
display.display (); // Ecrire pour afficher display.clearDisplay (); // efface l'affichage
Affichage d'une variable de caractère:
Pour afficher le contenu à l'intérieur d'une variable, le code suivant peut être utilisé.
char i = 5; // la variable à afficher display.setTextSize (1); // Sélectionnez la taille du texte display.setTextColor (WHITE); // pour l'affichage monochrome uniquement avec affichage possible.setCursor (0,0); // 0,0 est le coin supérieur gauche de l'écran OLED display.write (i); // Ecrire la variable à afficher
Dessiner une ligne, un cercle, un rectangle, un triangle:
Si vous souhaitez ajouter des symboles à votre affichage, vous pouvez utiliser le code suivant pour dessiner l'un des éléments suivants
display.drawLine (display.width () - 1, 0, i, display.height () - 1, WHITE); // void drawLine (x0, y0, x1, y1, couleur); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, WHITE); // void drawRect (x0, y0, w, h, couleur); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, hauteur.affichage () / 2 + i, BLANC); // void drawTriangle (x0, y0, x1, y1, x2, y2, couleur); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, couleur);
Dessiner une chaîne à l'écran:
Le morceau de code suivant peut être utilisé pour afficher n'importe quel message à l'écran à un endroit et à une taille particuliers
display.setTextSize (2); // définit la taille du texte display.setTextColor (WHITE); // paramètre de couleur display.setCursor (10,0); // La chaîne commencera à 10,0 (x, y) display.clearDisplay (); // Efface tout affichage précédent sur l'écran display.println ("Circuit Digest"); // Imprime la chaîne ici "Circuit Digest" display.display (); // envoie le texte à l'écran
Affichage d'une image bitmap:
Une chose peu fiable qui peut être faite avec le module OLED est qu'il peut être utilisé pour afficher des bitmaps. Le code suivant est utilisé pour afficher une image bitmap
statique const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11110010000, B1111001000, B10111100, B100 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, BLANC); // void drawBitmap (x, y, * bitmap, w, h, couleur);
Comme vous pouvez le voir, pour afficher une image, les données bitmap doivent être stockées dans la mémoire du programme sous la forme de la directive PROMGMEM. En termes simples, nous devons indiquer à l'écran OLED ce qu'il faut faire de chaque pixel en lui passant une séquence ou des valeurs d'un tableau, comme indiqué ci-dessus. Ce tableau contiendra les données bitmap de l'image.
Cela peut sembler compliqué, mais avec l'aide d'un outil Web, il est très facile de convertir une image en valeurs bitmap et de les charger dans le tableau ci-dessus.
Chargez simplement l'image et ajustez les paramètres pour obtenir votre aperçu préféré de l'image. Cliquez ensuite sur "Générer le code", copiez le code et collez-le dans votre tableau. Téléchargez le programme et vous avez terminé. J'ai essayé d'afficher un logo batman et c'est comme ça que ça s'est passé.
Il y a encore beaucoup de choses que vous pouvez faire avec ces bibliothèques. Pour connaître toutes les possibilités, visitez la page Adafruit GFX Graphics Primitives.
J'espère que vous l'avez fait fonctionner et que vous êtes prêt à implémenter un écran OLED dans certains de vos projets. Si vous rencontrez des problèmes, partagez-les dans la section commentaires et je ferai de mon mieux pour les rectifier.