oled-i2c.ino

GD32F103 (GigaDevice) — puce + cartes compatibles Blue Pill · Fichier : oled-i2c.ino · Langage : Arduino · Usage : Afficher sur un OLED I2C depuis le core STM32

Les bibliothèques Adafruit se compilent telles quelles sur le core STM32F1 : le SSD1306 se branche sur PB6/PB7 (Wire1 mappé en Wire par défaut) et la jauge animée prouve que le bus tourne.

Matériel requis

Une carte de développement GD32F103C8T6 (Cortex-M3 108 MHz, compatible broche à broche Blue Pill), alimentée en 3,3 V/5 V, avec un adaptateur ST-Link ou série. 1 OLED SSD1306 I2C 128×64.

Branchement

SDA sur PB7, SCL sur PB6 (câblage Wire par défaut du core), VCC 3,3 V, GND. Adresse 0x3C.

Fonctionnement

Wire pilote l'I2C matériel du GD32 ; Adafruit_SSD1306 garde le framebuffer et le recopie sur display(). Le test begin() échoue proprement si l'adresse est fausse. Avec Arduino : installez le core « STM32F1 » (Roger Clark, gestionnaire de cartes) et choisissez la carte « GD32F103C » ; le LED utilisateur est PC13 (actif à LOW). En C : bibliothèque GD32F10x + ST-Link.

Pour aller plus loin

Affichez la tension du potentiomètre en jauge, ou scannez le bus pour lister tous les modules Grove/I2C.

oled-i2c.ino

// OLED SSD1306 128x64 sur Wire (PB6/PB7 par defaut du core).
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define ADRESSE 0x3C

Adafruit_SSD1306 oled(128, 64, &Wire, -1);
unsigned long precedent = 0;

void setup() {
  Serial.begin(115200);
  Wire.begin();
  if (!oled.begin(SSD1306_SWITCHCAPVCC, ADRESSE)) {
    Serial.println("OLED absent (0x3C ?)"); for (;;);
  }
  oled.clearDisplay();
  oled.setTextColor(SSD1306_WHITE);
}

void loop() {
  if (millis() - precedent < 200) return;
  precedent = millis();
  oled.clearDisplay();
  oled.setTextSize(1);
  oled.setCursor(0, 0);
  oled.printf("GD32F103\n%lu ms\n", millis());
  oled.drawLine(0, 40, 127, 40, SSD1306_WHITE);
  int jauge = (millis() / 50) % 128;
  oled.fillRect(0, 48, jauge, 10, SSD1306_WHITE);
  oled.display();
}

← Retour à la fiche