x ライブラリのインストール方法は、めんどいので省略
x サイズは、約34KB
x 時間合わせは、別
x STM32G071は、ST様で貰ったNUCLEO-G071RBの事
x 非営利、研究調査目的で引用する。
目的
OLEDのテスト
アイテンドウの0.96 128x64(OLED) OLED096UNO-A
秋月のDS1307ZN+T&R I-06950
参考
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// コンパイル時にヘッダーファイルが適切に編集されていない場合に
// "Height incorrect, please fix Adafruit_SSD1306.h!"
// というエラーを表示するための記述
//#if (SSD1306_LCDHEIGHT != 64)
//#error("Height incorrect, please fix Adafruit_SSD1306.h!");
//#endif
// RSTピンがない互換品を使用するので-1を指定
//Adafruit_SSD1306 display(-1);
void setup() {
// I2Cアドレスは使用するディスプレイに合わせて変更する
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
}
// デバイスアドレス(スレーブ)
#define ADDR 0x68 // 2進数 1101000
char data_read[16];
void loop() {
// 画面表示をクリア
display.clearDisplay();
// テキストサイズを設定
display.setTextSize(3);
// テキスト色を設定
display.setTextColor(WHITE);
// テキストの開始位置を設定
display.setCursor(0, 10);
// レジスタのアドレスを先頭にする
Wire.beginTransmission(ADDR);
Wire.write(0x00);
Wire.endTransmission();
delay(1);
// I2Cスレーブに8byteのレジスタデータを要求する
Wire.requestFrom(ADDR, 8);
// 8byteのデータを取得する
for (int ii = 0; ii < 8; ii++) {
while (Wire.available() == 0 ) {}
data_read[ii] = Wire.read();
}
delay(1);
//表示変換する
char str1[16];
str1[0] = '0' + (data_read[2] >> 4);
str1[1] = '0' + (data_read[2] & 0xf);
str1[2] = ':';
str1[3] = '0' + (data_read[1] >> 4);
str1[4] = '0' + (data_read[1] & 0xf);
str1[5] = 0;
// 1行目に"Hello"を表示
display.println(str1);
// 2行目に"World!"を表示
//display.println("World!");
// 描画バッファの内容を画面に表示
display.display();
delay(1000);
}