🛠 Afficheur OLED I2C SSD1306

GD32F103 (GigaDevice) — puce + cartes compatibles Blue Pill · intermediaire · Schéma : IMG-gd32f103-intermediaire-3-i2c-oled-ssd1306.svg — module OLED SSD1306 0,91 pouce en I2C sur le bus du GD32F103C8 : SCL, SDA avec résistances de pull-up, VCC 3,3 V, adresse 0x3C

Objectifs

Piloter un afficheur OLED SSD1306 128x64 en I2C depuis le GD32F103C8, qui dispose de 2 périphériques I2C. C'est le démo « canonique » de l'écosystème communautaire GD32 : les dépôts CommunityGD32Cores (gd32-pio-projects et les démos du core Arduino) montrent justement un SSD1306 (souvent accompagné d'un DHT11). Vous apprendrez le câblage du bus, le rôle des pull-up et le diagnostic d'adresse.

Matériel

Code complet

// oled_i2c.ino — GD32F103C8 + SSD1306 I2C 0x3C
// Bibliothèques : Adafruit GFX + Adafruit SSD1306 (gestionnaire de librairies).
#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define ADRESSE_OLED 0x3C
Adafruit_SSD1306 ecran(128, 64, &Wire, -1);
uint8_t tour = 0;

void setup {
  Serial.begin(115200);
  Wire.begin;   // bus I2C par défaut du core GD32
  if (!ecran.begin(SSD1306_SWITCHCAPVCC, ADRESSE_OLED)) {
    Serial.println("OLED absent : vérifier 3.3V, SCL/SDA, adresse 0x3C");
    while (true) { delay(100); }
  }
  ecran.clearDisplay;
  ecran.setTextColor(SSD1306_WHITE);
  ecran.setCursor(0, 0);
  ecran.println("Bonjour GD32F103!");
  ecran.display;
}

void loop {
  ecran.fillRect(0, 20, 128, 12, SSD1306_BLACK);
  ecran.setCursor(0, 20);
  ecran.print("Compteur : ");
  ecran.println(tour++);
  ecran.display;
  delay(1000);
}

Vérification attendue

L'écran affiche « Bonjour GD32F103 ! » puis un compteur qui s'incrémente chaque seconde. Si begin échoue, le message d'erreur apparaît sur la console série USART0. Un scan I2C (croquis « I2C scanner ») doit lister l'adresse 0x3C quand le module est branché.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels