fbpixel
Étiquettes : , , ,

L’afficheur OLED est un afficheur graphique compact avec une résolution de 128×64 pixels qui permet de dessiner et d’afficher du texte afin de créer une interface graphique.

Matériel

  • Ordinateur
  • Arduino UNO
  • Câble USB A Mâle/B Mâle
  • OLED TF052

Principe de fonctionnement

L’afficheur OLED TF052 est basé sur le circuit SSD1306 et s’interface à l’aide de la communication I2C.

screen-oled-tf052-i2c Utilisation d'un Afficheur OLED 128x64 avec Arduino

Schéma

L’écran OLED présente 4 broches pour permettre la gestion de l’affichage. Il est alimenté par le microcontrôleur et se connecte au bus I2C.

  • GND Relier à la masse du microcontrôleur
  • VCC Broche d’alimentation. Typiquement connectée à la broche 3V ou 5V du microcontrôleur.
  • SCL Horloge de la communication I2C
  • SDA Données de la connexion I2C.
arduino-oled128x64-screen_bb Utilisation d'un Afficheur OLED 128x64 avec Arduino

Code

Une fois votre afficheur Oled correctement branché, vous pouvez modifier le code suivant pour obtenir la fonctionnalité désirée. Dans l’exemple suivant, nous allons simplement réaliser l’affichage d’un compteur.
Pour gérer l’écran OLED dans le programme, la librairie utilisée est U8x8lib.h dont les fonctions à connaître sont les suivantes:

  • U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE); pour définir l’écran en fonction du type
  • u8x8.begin(); pour initialiser l’écran
  • u8x8.setPowerSave(0) pour éclairer l’écran
  • u8x8.setFont(u8x8_font_chroma48medium8_r) pour définir la police utilisée
  • u8x8.setFlipMode(0) pour definir l’orientation
  • u8x8.drawString() pour écrire sur l’écran

D’autres fonctions plus spécifiques existent pour dessiner des rectangles, des lignes ou encore pour afficher des images.

//Libraries
#include <U8x8lib.h>//https://github.com/olikraus/u8glib

//Parameters
char cstr [16];//To convert int to char

//Variables
int oledCount  = 0;

//Objects
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE);

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init OLED screen
  u8x8.begin();
  u8x8.setPowerSave(0);
  u8x8.setFont(u8x8_font_chroma48medium8_r);
  u8x8.setFlipMode(0);
  drawCentered(1, "Hello World!");
  u8x8.drawString(0, 2, "<-right");
  drawLeft(3, "left->");
  u8x8.drawString(0, 6, "counter =");
}

void loop() {
  OledCounter();
}

void OledCounter() { /* function OledCounter */
  //// Create a counter
  drawLeft(6, itoa(oledCount, cstr, 10));
  oledCount += 1;
  if (oledCount > 255) {
    oledCount = 0;
    drawLeft(6, "    ");
  }
  delay(200);
}

void drawCentered(int lin, char* str) { /* function drawCentered */
  //// Create a counter
  int col = int((16 - String(str).length()) / 2);
  u8x8.drawString(col, lin, str);
}

void drawLeft(int lin, char* str) { /* function drawLeft */
  //// Create a counter
  int col = 15 - String(str).length();
  u8x8.drawString(col, lin, str);
}




Résultat

Observez bien où sont placées les chaînes de caractères affichées et jouez avec les paramètres d’entrées des fonctions pour comparer leurs effets. Cela vous permettra d’avoir une meilleur appréhension de la librairie et une meilleure compréhension des fonctionnalités du module Oled.

arduino-oled-result Utilisation d'un Afficheur OLED 128x64 avec Arduino

Applications

  • Fabriquer une horloge
  • Créer un menu interactif avec un encodeur rotatif

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie