oled-i2c.ino

GD32F103 (GigaDevice) — chip + placas compatibles Blue Pill · Archivo : oled-i2c.ino · Lenguaje : Arduino · Uso : Afficher sur un OLED I2C depuis le core STM32

Las librerías Adafruit compilan tal cual en el core STM32F1: el SSD1306 se conecta a PB6/PB7 (Wire1 mapeado como Wire por defecto) y la aguja animada prueba que el bus funciona.

Hardware necesario

Una placa de desarrollo GD32F103C8T6 (Cortex-M3 a 108 MHz, compatible pin a pin con Blue Pill), alimentada a 3,3 V/5 V, con un adaptador ST-Link o serie. 1 OLED SSD1306 I2C 128x64.

Cableado

SDA en PB7, SCL en PB6 (cableado Wire por defecto del core), VCC 3,3 V, GND. Dirección 0x3C.

Funcionamiento

Wire maneja el I2C material del GD32; Adafruit_SSD1306 guarda el framebuffer y lo copia en display(). La prueba begin() falla limpiamente si la dirección es errónea. Con Arduino: instale el core « STM32F1 » (Roger Clark, gestor de placas) y elija la placa « GD32F103C »; el LED de usuario es PC13 (activo en LOW). En C: biblioteca de firmware GD32F10x + ST-Link.

Para ir más lejos

Muestren la tensión del potenciómetro como aguja, o barran el bus para listar todos los módulos 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();
}

← Volver a la ficha