はじめてのMKR ZERO (7) 透過OLEDディスプレイ①

 SpartFunのTransparent Graphical OLED Breakoutは、表示部分がほぼ透明なのが特徴のOLEDグラフィック表示器です。表示色は水色です。SPIとI2Cのインターフェースを搭載しています。

Transparent Graphical OLED Breakoutのおもな特徴

  • 電源電圧 1.65~3.3V
  • 電流 全ドットON時400mA以下
  • 表示ドット 128×64ピクセルのうち128×56が透過 
  • 表示面積 35.5×18mm
  • インターフェース 400kHz I2C, 10MHz SPI
  • I2Cスレーブ・アドレス 0x30(デフォルト)、0x31

ドライバ、ライブラリの構成

 三つのライブラリから構成されています。

  • HyperDisplay Graphics Library
  • SSD1309 HyperDisplay Mid Level Library
  • Transparent Graphical Bottom Level Library

接続

 SPI接続を選びました。JP1~JP4は、デフォルトではすべてつながっていますが、ナイフの刃先で銅箔を切断しました。

OLED MKRZERO
CS 7
D/C 6
SCLK SCK
MOSI MOSI
3V3 Vcc
GND GND

ライブラリのダウンロード

   https://cdn.sparkfun.com/assets/learn_tutorials/6/1/2/SparkFun_Transparent_Graphical_OLED_Breakout_Libraries.zip

からダウンロードします。解凍すると下記の三つのフォルダができます。

  • SparkFun_HyperDisplay
  • HyperDisplay_SSD1309_ArduinoLibrary
  • HyperDisplay_UG2856KLBAG01_ArduinoLibrary

 これらを、ドキュメント-Arduino-librariesフォルダにコピーします。Arduino IDEをいったん終了して再度起動します。
 サンプル例は、SparkFun Transparent Graphical - Example1_DisplayTestを読み込みます。
 CS_PINとDC_PINを接続したピン番号に変更し、USE_SPIを1にします。

 コンパイル、実行すると、SpartFunのロゴを表示し、ラインや円、四角の描画のデモを繰り返します。

独自にスケッチを書く

 print()とcircle()を使いました。

// By: Owen Lyke SparkFun Electronics Date: February 26, 2019
#include "HyperDisplay_UG2856KLBAG01.h"
// Your library can be installed here: http://librarymanager/All#SparkFun_Transparent_Graphical_OLED
// The rest of the Layer Cake: http://librarymanager/All#SparkFun_HyperDisplay_SSD1309
// http://librarymanager/All#SparkFun_HyperDisplay
#define SERIAL_PORT Serial
#define WIRE_PORT Wire // Used if USE_SPI == 0
#define SPI_PORT SPI // Used if USE_SPI == 1
#define CS_PIN 7 // Used only if USE_SPI == 1
#define DC_PIN 6 // Used only if USE_SPI == 1

UG2856KLBAG01_SPI myTOLED; // Declare a SPI-based Transparent OLED object called myTOLED

uint8_t color = 0x01;
uint8_t noColor = 0x00;

void setup() {
Serial.begin(9600);
Serial.println("Example1_DisplayTest: Transparent Graphical OLED");

SPI_PORT.begin();
myTOLED.begin(CS_PIN, DC_PIN, SPI_PORT); // Begin for SPI requires that you provide the CS and DC pin numbers
myTOLED.clearDisplay();
}

int i = 0; int j = 0;

void loop() {
i += 1;
Serial.println(i);
myTOLED.setTextCursor(i,i);
myTOLED.print("AAAAAAAA");

myTOLED.circle(100-i, 50-j, 12, false, (color_t)&color);
delay(2);
myTOLED.circle(100-i, 50-j, 12, false, (color_t)&noColor);
delay(1);
if (i>32) {
i = 0; j += 1;
delay(1);
}
}

 実行中の様子です。文字は表示できませんでした。HyperDisplayのコマンドはこちらのページが詳しいです。

前へ

はじめてのMKR ZERO (6) 距離センサVL53L1X

次へ

はじめてのMKR ZERO (8) 透過OLEDディスプレイ②