« XIAO/M5AtomでLCD240x240(SPI)を制御する((XIAO/Arduino版、M5Atom/Arduino版) | トップページ | wio-terminalのファームウェア・アップデートについて(linux版) »

2020年10月15日 (木)

XIAO/M5AtomでOLED128x128(I2C)を制御する((XIAO/Arduino版、M5Atom/Arduino版)

2020/10/16
wio-terminal用のplatformio.iniを追加した。

2020/10/15
初版

PlatformIO XAIO M5ATOM OLED128x128(I2C)

PlatformIO XAIO M5ATOM OLED128x128(I2C)

概要

XIAO/M5Atomで以下のOLED128x128(I2C)を制御する((XIAO/Arduino版、M5Atom/Arduino版)。
platformがArduinoなのでソースを共通化して動かしてみる。

・https://wiki.seeedstudio.com/Grove-OLED_Display_1.12inch/
・https://github.com/SeeedDocument/Seeed-WiKi/blob/master/docs/Grove-OLED_Display_1.12inch.md
本ボードは、ボードのバージョンによって、解像度が96x96または128x128であり、それぞれでコントローラも異なる。
入手したボードは、v1.1で解像度は128x128でコントローラはSH1107Gであった。(Vdd:3.3V/5V両用対応)

開発ツールplatformioのインストールについては以下を参照のこと:
開発ツールPlatformIOをcliで使う(Seeeduino-XIAO版)
M5Atomを開発ツールPlatformIOで使う(M5Atom/Arduino版)
M5Atomを開発ツールPlatformIOで使う(Windows10版)

接続

本モジュールはI2Cタイプなので(I2C用の)Grove-Conectorに接続する。
(XIAOは専用のshield経由で接続する)

platformio.ini

XIAO用:

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library storages ; Advanced options: extra scripting ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [env:seeed_xiao] platform = atmelsam board = seeed_xiao framework = arduino build_flags = -DXIAO upload_protocol = sam-ba monitor_speed = 115200 lib_deps = # Accept new functionality in a backwards compatible manner and patches olikraus/U8g2 @ ^2.28.7 lib_ldf_mode = deep+

M5ATOM用:

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library storages ; Advanced options: extra scripting ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [env:m5stick-c] platform = espressif32 board = m5stick-c framework = arduino build_flags = -DM5ATOM monitor_speed = 115200 lib_deps = # use M5Atom lib 3113 # use "FastLED" 126 # Accept new functionality in a backwards compatible manner and patches olikraus/U8g2 @ ^2.28.7 lib_ldf_mode = deep+

デモ・スケッチ

以下のようなファイルを作成する:
src/helloworld.ino

#ifdef M5ATOM #include "M5Atom.h" #endif #include <Arduino.h> #include <U8g2lib.h> #include <U8x8lib.h> #include <Wire.h> #ifdef M5ATOM // Grove Connector of Atom Matrix (I2C GPIO Pin: G26,G32) #define SCL 32 #define SDA 26 #endif U8G2_SH1107_SEEED_128X128_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); U8X8_SH1107_SEEED_128X128_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); void setup(void) { /* NO NEED in this sketch #ifdef M5ATOM M5.begin(); // Wire.begin() must be after M5.begin() Wire.begin(26, 32); // Grove Connector of Atom Matrix (I2C GPIO Pin: G26,G32) #endif */ u8g2.begin(); u8g2.enableUTF8Print(); u8x8.begin() ; } void loop(void) { // using u8g2 lib u8g2.firstPage(); do { u8g2.setFont(u8g2_font_ncenB10_tr); u8g2.drawStr(0,12,"Hello World! #0"); u8g2.drawStr(0,24,"Hello World! #1"); u8g2.drawStr(0,36,"Hello World! #2"); u8g2.drawStr(0,48,"Hello World! #3"); u8g2.drawStr(0,60,"Hello World! #4"); u8g2.drawStr(0,72,"Hello World! #5"); u8g2.drawStr(0,84,"Hello World! #6"); u8g2.drawStr(0,96,"Hello World! #7"); u8g2.drawStr(0,108,"Hello World! #8"); u8g2.drawStr(0,120,"Hello World! #9"); u8g2.drawStr(0,132,"Hello World! #10"); } while ( u8g2.nextPage() ); delay(1000); //---------------- // kanji display u8g2.setFont(u8g2_font_b10_t_japanese1); u8g2.setFontDirection(0); u8g2.firstPage(); do { u8g2.setCursor(0, 15); u8g2.print("Hello World!"); u8g2.setCursor(0, 40); u8g2.print("こんにちは世界"); u8g2.setCursor(0, 50); u8g2.print("今日は良い天気/晴天です。"); u8g2.setCursor(0, 60); u8g2.print("明日は台風で強風でしょう。"); u8g2.setCursor(0, 70); u8g2.print("佐藤、田中、鈴木、青木、小松、増野、茅野、松岡"); } while ( u8g2.nextPage() ); delay(1000); // using u8x8 lib u8x8.setFont(u8x8_font_artossans8_r) ; u8x8.clear(); u8x8.println("Text Test") ; u8x8.println("XIAO/M5Atom\n") ; u8x8.print("OLED") ; u8x8.print("128x128(i2c)\n"); u8x8.println(millis()); u8x8.println(123.45); delay(1000); //-------------------- }

ビルド・実行

以下の手順でビルド・実行する:
(platformio.iniは、ボードごとに切り替える)

run pio -t upload

スケッチが起動すると、LCDに文字が表示される。
u8g2ライブラリ、u8x8ライブラリを交互に使用して文字を表示する。
日本語も表示するが、すべての漢字を持っているわけでないようだ。
(このデモでは人名が一部表示されない)

追加(wio-terminal用platformio.ini)

以下のplatformio.iniに切り替えるとwio-terminalでビルド・実行できる:

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library storages ; Advanced options: extra scripting ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [env:seeed_wio_terminal] platform = atmelsam board = seeed_wio_terminal framework = arduino build_flags = -DWIO_TERMINAL lib_deps = # Accept new functionality in a backwards compatible manner and patches olikraus/U8g2 @ ^2.28.7 upload_protocol = sam-ba monitor_speed = 115200 lib_ldf_mode = deep+

参考情報

U8g2 Library wiki: U8g2 is a monochrome graphics library
u8g2 reference

Seeeduino XIAO用Grove シールド バッテリー管理チップ 搭載

XIAO/M5Atomで気圧センサー(HP206C)を動かす(XIAO/Arduino版、M5Atom/Arduino版)
XIAO/M5AtomでLCD240x240(SPI)を制御する((XIAO/Arduino版、M5Atom/Arduino版)

M5AtomでOLED128x128(SPI)を制御する(Arduino版)
XIAOでOLED128x128(SPI)を制御する(Arduino版)
XIAOでLCD160x80(SPI)を制御する(Arduino版)

以上

|

« XIAO/M5AtomでLCD240x240(SPI)を制御する((XIAO/Arduino版、M5Atom/Arduino版) | トップページ | wio-terminalのファームウェア・アップデートについて(linux版) »

PlatformIO」カテゴリの記事

Arduino」カテゴリの記事

SH1107G」カテゴリの記事

XIAO」カテゴリの記事

M5Atom」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« XIAO/M5AtomでLCD240x240(SPI)を制御する((XIAO/Arduino版、M5Atom/Arduino版) | トップページ | wio-terminalのファームウェア・アップデートについて(linux版) »