LoginSignup
0
0

STM32F103C6 ボードで SSD1306 128x32 を Arduino I2Cで動かす

Posted at

意外と情報を探すのに手間取ったのでメモ

image.png

main.cpp
#include <Arduino.h>
#include <Wire.h>
#include <U8x8lib.h>

// - (add) PB8(SCL)/PB9(SDA) - SSD1306 128*32

U8X8_SSD1306_128X32_UNIVISION_HW_I2C u8x8(U8X8_PIN_NONE);

void setup(void)
{
  Wire.setSCL(PB8);
  Wire.setSDA(PB9);

  u8x8.begin();
}

void loop(void)
{
  u8x8.setCursor(0, 0);
  u8x8.setFont(u8x8_font_8x13B_1x2_f);
  u8x8.println("Boot F103C6");

  u8x8.clear();
}
platformio.ini
[env:genericSTM32F103C6]
platform = ststm32
board = genericSTM32F103C6
framework = arduino
lib_deps = olikraus/U8g2@^2.35.5

upload_protocol = stlink

安く手に入ったボード,せっかくなので 128x32 の表示機を添えて,ガシガシはんだ付けで配線して使えるように作成中でした。

STM32 + ArduinoでI2Cのピンアサインを変える

genericSTM32F103C6 ですと SCL が PB6 SDA が PB7 が前提です。PB8 と PB9 に配線したので,main.cpp でピン定義を変更しました。

main.cpp(抜粋)
  Wire.setSCL(PB8);
  Wire.setSDA(PB9); // これを実行した後に u8x8 を初期化
  u8x8.begin();

u8x8定義

ピン定義を変更した上で,STM32ではI2C1に接続しましたので,

main.cpp(抜粋)
U8X8_SSD1306_128X32_UNIVISION_HW_I2C u8x8(U8X8_PIN_NONE);

で普通に使えました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0