・2023/02/18
SSD1306 OLEDの描画を高速化する方法
(How to Speed Up OLED Drawing Speed)
Tags: [電子工作]
● ESP32で東方の Bad Apple!!の動画を 128 x 64 dotの OLED SSD1306で再生する!
・2023/02/18
![ESP32で東方の Bad Apple!!の動画を 128 x 64 dotの OLED SSD1306で再生する!](data:image/webp;base64,UklGRvwEAABXRUJQVlA4WAoAAAAoAAAALwAALwAASUNDUOABAAAAAAHgbGNtcwQgAABtbnRyUkdCIFhZWiAH4gADABQACQAOAB1hY3NwTVNGVAAAAABzYXdzY3RybAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWhhbmR56b9WWj4BtoMjhVVG90+qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApkZXNjAAAA/AAAACRjcHJ0AAABIAAAACJ3dHB0AAABRAAAABRjaGFkAAABWAAAACxyWFlaAAABhAAAABRnWFlaAAABmAAAABRiWFlaAAABrAAAABRyVFJDAAABwAAAACBnVFJDAAABwAAAACBiVFJDAAABwAAAACBtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAYAAAAcAEMAQwAwAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMPwAABd3///MmAAAHkAAA/ZL///uh///9ogAAA9wAAMBxWFlaIAAAAAAAAG+gAAA48gAAA49YWVogAAAAAAAAYpYAALeJAAAY2lhZWiAAAAAAAAAkoAAAD4UAALbEcGFyYQAAAAAAAwAAAAJmaQAA8qcAAA1ZAAAT0AAACltWUDggNAIAAJAMAJ0BKjAAMAA+bSqQRiQiIaEuO/swgA2JQBihbkGFDZ5/9B22i58D0AdCB/mYgB/AV27RoTOfIB9RaQAzKsbc6jjf6L3eHyq/mpjU9K/Zv+eRcFPdQmZSfnlVy0s5eyBUb5rRW4tCjNp35AAA/v35Wf5S+vkAFNB1UZv+/wAnfkmH+p8YEr2vPYBFLEx/y1XC+SfC6I7mXUZCrS//sWLON43vvHULcRdj+TyyBP/Bf+V8hsGEEbUsL9bp4Pn6PlGCnv7b4VDQ7K6G9jlxTZR109OzESZaYaR3zGYWwI3qcQ240TVDNXJKFilpmmdt7zvaf5s1VEQrUlRJd1lN9tD+Ky3zatNoSFa/VnuHFqDgetsi3QCLSDpoGutstZCPE/DXiBFvZsuTzmMwsIzTQ5wgE6/pEch3XiWx+XM2zgq3dddl1RJkwvvorPqtPms3PieaQ8AI6w0k65jUczEx+WhklcvNEgkNsLzFJp6V7+1H8Ns167kfnJEprq2ZwS9UUw7xMgADEdvBliN4ftVyN/zvGm6XjY4WVCEt8Kj5roZmQ/DNnbcpRwDSfgCksq25yaJdurN86/++fuJ6Guw1ha9HCLWCNqgHeO2xawqPHwQZrYEzP1SaCBk6VzH0dxeNuun63IYaGEZe3sqm2dc8SFlqI6G2FchLAKtINgK4RBB9IJy2X6auwN2H4RUCP61yPvzuW6//nKKBhylMZv2GjIQONsrDlQPciu9ve8F2fX43LQAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAADAAAAADoAQAAQAAADAAAAAAAAAA)
ESP32で東方の Bad Apple!!の動画を 128 x 64 dotの OLED SSD1306で再生する!
ESP32で東方の Bad Apple!!の動画を再生する!実際にはパラパラ漫画です
注意: ESP32で MP3を再生して音楽が鳴ります!
Touhou Bad Apple!! Demo ESP32 with MP3 Audio and SSD1306 OLED (128x64 dot)
● OLED SSD1306の描画を高速化する方法
「ESP32で東方の Bad Apple!!の動画を再生する!」は実際にはパラパラ漫画です。
パラパラ漫画と言う事は画面への描画速度がキモになります。
30 fpsとして 1秒 / 30フレーム = 33.33ms以内に画面への描画を完了する必要が有ります。
現状では 1画面あたり 15msで間に合っています。
しかし、プログラマとしては 33.33msに描画が間に合っていても、あの手この手で高速化をしたいものです。たとえそれが自己満足であっても!趣味なら大丈夫!速さは正義だ!(大昔の SHARP X68000の頃の標語)
ここに Bad Apple!!で行なった OLEDの描画速度改善の改造の内容を書いていきます。
1) SSD1306の OLEDのメモリ構造に一致する様にビットマップデータを転送する
2) SSD1306のライブラリの I2Cの転送バイト長を 17バイトから ESP32の上限の 128バイトにする
3) I2Cの SCLKの周波数をクロックアップする
ESP32の I2C OLED SSD1306の高速化のネタとしては上記で出し切ったと思います。
● 1) SSD1306の OLEDのメモリ構造に一致する様にビットマップデータを転送する
簡単に言うと、SSD1306の OLEDのメモリ構造に一致する様にビットマップデータを転送します。
具体的には Bad Apple!!の
mod Rotate 90 for Direct Write OLED Buffer(470965 bytes)
の所で、元々の描画は 1ドット単位で 8回描画バッファにアクセスして 1バイト(8ドット分)のビットマップデータを書き込んでいましたが、90度回転する事により 1回の描画バッファへのアクセスで 1バイト(8ドット分)の書き込みをする様にしました。
単純に 8倍以上 OLEDの描画が高速になります。
Bad Apple!!の場合は元となる描画データも 90度回転の再変換を行ないました。
・OLED SSD1306 Graphic Display Data RAM (GDDRAM)
![OLED SSD1306 Graphic Display Data RAM (GDDRAM)](data:image/webp;base64,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)
SSD1306 Datasheet by DFRobot
8.7 Graphic Display Data RAM (GDDRAM)から引用
図の様に OLED SSD1306の Graphic Display RAMは 1バイトのデータが縦になっています。
例えば 0番地から 0x01, x02, 0x0F, 0xA3, 0xE0のデータ書き込むと、
画面の左上が下記の表示になります。
■・■■・ < LSB 0x01
・■■■・
・・■・・
・・■・・
・・・・・
・・・■■
・・・・■
・・・■■ < MSB 0x80
下記の場合は、FREEの文字を描きます。
0x1F, 0x05, 0x05, 0x01, 0x00 // F
0x1F, 0x05, 0x0D, 0x12, 0x00 // R
0x1F, 0x15, 0x15, 0x11, 0x00 // E
0x1F, 0x15, 0x15, 0x11, 0x00 // E
画面の左上が下記の表示になります。
■■■■・■■■・・■■■■・■■■■・ < LSB 0x01
■・・・・■・・■・■・・・・■・・・・
■■■・・■■■・・■■■・・■■■・・
■・・・・■・■・・■・・・・■・・・・
■・・・・■・・■・■■■■・■■■■・
・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・ < MSB 0x80
SSD1306のライブラリは 1バイトが横向きになっているので 1バイトの書き込みに 8バイト分の書き込みが必要になります。(つまり 8倍遅い)
esp8266-oled-ssd1306/src/OLEDDisplay.cpp
void OLEDDisplay::drawFastImage(int16_t xMove, int16_t yMove, int16_t width, int16_t height, const uint8_t *image)
OLEDDisplay::drawInternal()
void inline OLEDDisplay::drawInternal(int16_t xMove, int16_t yMove, int16_t width, int16_t height, const uint8_t *data, uint16_t offset, uint16_t bytesInData) {
この OLEDDisplay::drawInternal()の中の処理を見ると良くわかります。
ThingPulseの SSD1306のライブラリは何故か無駄に処理が入っていて、直接 OLED用の描画バッファをシンプルに操作するメソッドが有りません。
this->buffer
this->buffer = (uint8_t*) malloc((sizeof(uint8_t) * displayBufferSize) + BufferOffset);
ただし、幸いにも this->bufferでその描画バッファに外部からアクセスできるのでそれを使用して自前で描画バッファをいじくります。
Bad Apple!!では下記のコミットで描画バッファを直接いじくっています。
mod Optimize Direct Draw OLED buffer
● 2) SSD1306のライブラリの I2Cの転送バイト長を 17バイトから ESP32の上限の 128バイトにする
(1)の 90度回転のプログラムのロジック変更で高速化が難しい場合はこの方法(ライブラリ側の改善)で超お手軽に高速化が可能です。
Arduinoのライブラリなので AVRでの制限値に抑えているのか、I2Cのデータの転送長が 17バイトになっています。(最初の 0x40と 16バイトの描画データの合計 17バイト)
esp8266-oled-ssd1306/src/SSD1306Wire.h
byte k = 0;
for (y = minBoundY; y <= maxBoundY; y++) {
for (x = minBoundX; x <= maxBoundX; x++) {
if (k == 0) {
_wire->beginTransmission(_address);
_wire->write(0x40); // 最初の 0x40
}
_wire->write(buffer[x + y * this->width()]);
k++;
if (k == 16) { // 16バイトの描画データ
_wire->endTransmission();
k = 0;
}
}
yield();
}
● 17バイト長から 128バイト長にします
下記の感じで _display()を実装しました。
TwoWire* _wire = &Wire;
inline void _sendCommand(uint8_t command) {
_wire->beginTransmission(0x3c);
_wire->write(0x80);
_wire->write(command);
_wire->endTransmission();
}
#define COLUMNADDR 0x21
#define PAGEADDR 0x22
void _display()
{
uint8_t* ppImage = display.buffer;
_sendCommand(COLUMNADDR);
_sendCommand(0);
_sendCommand((128 - 1));
_sendCommand(PAGEADDR);
_sendCommand(0x0);
_sendCommand(0x7);
// displayBufferSize = displayWidth * displayHeight / 8;
// 127 * 8
for (uint16_t i=0; i < 8; i++) {
_wire->beginTransmission(0x3c);
_wire->write(0x40);
for (uint8_t x = 0; x < 127; x++) {
_wire->write(*ppImage++);
}
_wire->endTransmission();
}
// (128 - 127) * 8
_wire->beginTransmission(0x3c);
_wire->write(0x40);
for (uint8_t x = 0; x < 8; x++) {
_wire->write(*ppImage++);
}
_wire->endTransmission();
}
// Update Display frame
// display.display();
_display();
#define I2C_SCLK_FREQ 1000000
で
1画面の描画速度を 13.84msから 11.82msになり 2.02ms高速化できました!
6573 frame * 2.02 ms = 13.277 sec速くなるハズ、でしたが、何故か遅くなりました。
原因は、esp8266-oled-ssd1306/src/SSD1306Wire.hのオリジナルの display()では書き換わった部分だけを検出して必要最低限の矩形領域だけを転送していたからでした。
// Calculate the Y bounding box of changes
void display(void) {
...
#ifdef OLEDDISPLAY_DOUBLE_BUFFER
// Calculate the Y bounding box of changes
// and copy buffer[pos] to buffer_back[pos];
for (y = 0; y < (this->height() / 8); y++) {
for (x = 0; x < this->width(); x++) {
uint16_t pos = x + y * this->width();
if (buffer[pos] != buffer_back[pos]) {
minBoundY = std::min(minBoundY, y);
maxBoundY = std::max(maxBoundY, y);
minBoundX = std::min(minBoundX, x);
maxBoundX = std::max(maxBoundX, x);
}
buffer_back[pos] = buffer[pos];
}
yield();
}
※ OLEDDISPLAY_DOUBLE_BUFFERはデフォルトで有効になっています。(defineで定義している)
// Use DOUBLE BUFFERING by default
// Use DOUBLE BUFFERING by default
#ifndef OLEDDISPLAY_REDUCE_MEMORY
#define OLEDDISPLAY_DOUBLE_BUFFER
#endif
と言う訳で変化領域のロジックを使用したかったのでオリジナルの SSD1306Wire.hを下記に改造します
下記を追加する
#if defined(ARDUINO_ARCH_ESP32)
#define I2C_MAX_TRANSFER_BYTE 128
#else
#define I2C_MAX_TRANSFER_BYTE 17
#endif
void display(void) {
...
_wire->write(buffer[x + y * this->width()]);
k++;
if (k == 16) {
を下記に変更する
if (k == (I2C_MAX_TRANSFER_BYTE - 1)) {
_wire->endTransmission();
k = 0;
}
1画面の描画速度を 15.80msから 12.02msになり 3.78ms高速化できました!
速度改善として esp8266-oled-ssd1306ライブラリにプルリク(改善提案)を出しました。
ESP32 improve display speed for SSD1306 #380
プルリクを出した当日(2023/03/12)にマージ(ThingPulseの責任者が内容を確認して承認)されました!
Releases 4.4.0
4.4.0で全世界にリリースされました!!
ESP32-D0WDQ6 (revision v1.0)
ESP32-D0WD-V3 (revision v3.0)
ESP32-S3 (revision v0.1)
ESP32-C3 (revision v0.3)
で動作を確認済みです。(動作確認の為だけに RISC-V系の ESP32-C3が欲しくなったなw >> その為だけに買いましたww)
SSD1306Wire.h | ノーウェイトの実行時間 |
I2C_MAX_TRANSFER_BYTE 17(オリジナル) | 1:00.068 |
I2C_MAX_TRANSFER_BYTE 128(改造版) | 0:47.030、13秒高速化(27% UP) |
※ ESP32-D0WDQ6での測定結果
OLED SH1106の同様のプルリク(改善提案)を出しました。
ESP32 improve display speed for SH1106 #382
● 3) I2Cの SCLKの周波数をクロックアップする
(1)の 90度回転のプログラムのロジック変更で高速化が難しい場合は I2Cの SCLKの周波数をクロックアップする事で超お手軽に高速化が可能です。
SSD1306自身は SCLKは最高 10MHzで駆動できます。
SSD1306.pdf
Table 13-5 : 3-wire Serial Interface Timing Characteristics
tcycle, Clock Cycle Time, Min. 100ns
・OLED SSD1306 SCLK Max Frequency
![OLED SSD1306 SCLK Max Frequency](data:image/webp;base64,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)
Adruinoの SSD1306ライブラリのデフォルトは 700kHz。
esp8266-oled-ssd1306/src/SSD1306Wire.h
int _frequency = 700000
SSD1306Wire(uint8_t _address, int _sda = -1, int _scl = -1, OLEDDISPLAY_GEOMETRY g = GEOMETRY_128_64, HW_I2C _i2cBus = I2C_ONE, int _frequency = 700000) {
ESP32の I2Cの SCL SCLKは最高 4MHzで駆動できます。
ESP32 Inter-Integrated Circuit (I2C)
MAX freq for SCL 4 MHz
と言う訳で、700kHzから 4MHzにクロックアップして SSD1306の描画を 5.7倍速に高速化します。
と言いたい所ですが、ESP32のライブラリ内部で上限が 1MHzに制限されています。
と言う訳で 1MHzに設定します。(理論値で 1.43倍になります)
#define I2C_SCLK_FREQ 1000000
#ifdef I2C_SCLK_FREQ
SSD1306 display (0x3c, I2C_SDA, I2C_SCL, GEOMETRY_128_64, I2C_ONE, I2C_SCLK_FREQ);
#else
SSD1306 display (0x3c, I2C_SDA, I2C_SCL);
#endif
下記の記事にまとめていますが、実際には実測値で 1.37倍になります。(892.19kHz / 648.64kHz)
ESP I2Cの SCLKの動作周波数の実測値や、動作周波数を黒魔術でクロックアップする{禁断の裏ワザ}は下記の記事に記載しています。
・2023/02/18
![EPS32の I2Cの SCLの周波数をクロックアップして SSD1306 OLEDの描画を高速化する方法](data:image/webp;base64,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)
EPS32の I2Cの SCLの周波数をクロックアップして SSD1306 OLEDの描画を高速化する方法
OLED SSD1306で I2Cの SCLK周波数をドーピングで高速化して描画速度を爆速にする方法
Tags: [電子工作]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
![ESP32で東方の Bad Apple!!の動画を 128 x 64 dotの OLED SSD1306で再生する!](data:image/webp;base64,UklGRvwEAABXRUJQVlA4WAoAAAAoAAAALwAALwAASUNDUOABAAAAAAHgbGNtcwQgAABtbnRyUkdCIFhZWiAH4gADABQACQAOAB1hY3NwTVNGVAAAAABzYXdzY3RybAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWhhbmR56b9WWj4BtoMjhVVG90+qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApkZXNjAAAA/AAAACRjcHJ0AAABIAAAACJ3dHB0AAABRAAAABRjaGFkAAABWAAAACxyWFlaAAABhAAAABRnWFlaAAABmAAAABRiWFlaAAABrAAAABRyVFJDAAABwAAAACBnVFJDAAABwAAAACBiVFJDAAABwAAAACBtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAYAAAAcAEMAQwAwAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMPwAABd3///MmAAAHkAAA/ZL///uh///9ogAAA9wAAMBxWFlaIAAAAAAAAG+gAAA48gAAA49YWVogAAAAAAAAYpYAALeJAAAY2lhZWiAAAAAAAAAkoAAAD4UAALbEcGFyYQAAAAAAAwAAAAJmaQAA8qcAAA1ZAAAT0AAACltWUDggNAIAAJAMAJ0BKjAAMAA+bSqQRiQiIaEuO/swgA2JQBihbkGFDZ5/9B22i58D0AdCB/mYgB/AV27RoTOfIB9RaQAzKsbc6jjf6L3eHyq/mpjU9K/Zv+eRcFPdQmZSfnlVy0s5eyBUb5rRW4tCjNp35AAA/v35Wf5S+vkAFNB1UZv+/wAnfkmH+p8YEr2vPYBFLEx/y1XC+SfC6I7mXUZCrS//sWLON43vvHULcRdj+TyyBP/Bf+V8hsGEEbUsL9bp4Pn6PlGCnv7b4VDQ7K6G9jlxTZR109OzESZaYaR3zGYWwI3qcQ240TVDNXJKFilpmmdt7zvaf5s1VEQrUlRJd1lN9tD+Ky3zatNoSFa/VnuHFqDgetsi3QCLSDpoGutstZCPE/DXiBFvZsuTzmMwsIzTQ5wgE6/pEch3XiWx+XM2zgq3dddl1RJkwvvorPqtPms3PieaQ8AI6w0k65jUczEx+WhklcvNEgkNsLzFJp6V7+1H8Ns167kfnJEprq2ZwS9UUw7xMgADEdvBliN4ftVyN/zvGm6XjY4WVCEt8Kj5roZmQ/DNnbcpRwDSfgCksq25yaJdurN86/++fuJ6Guw1ha9HCLWCNqgHeO2xawqPHwQZrYEzP1SaCBk6VzH0dxeNuun63IYaGEZe3sqm2dc8SFlqI6G2FchLAKtINgK4RBB9IJy2X6auwN2H4RUCP61yPvzuW6//nKKBhylMZv2GjIQONsrDlQPciu9ve8F2fX43LQAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAADAAAAADoAQAAQAAADAAAAAAAAAA)
ESP32で東方の Bad Apple!!の動画を 128 x 64 dotの OLED SSD1306で再生する!
ESP32で東方の Bad Apple!!の動画を再生する!実際にはパラパラ漫画です
![2.4インチの大画面 OLED SSD1309で東方の Bad Apple!!の動画を再生する](data:image/webp;base64,UklGRvwEAABXRUJQVlA4WAoAAAAoAAAALwAALwAASUNDUOABAAAAAAHgbGNtcwQgAABtbnRyUkdCIFhZWiAH4gADABQACQAOAB1hY3NwTVNGVAAAAABzYXdzY3RybAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWhhbmR56b9WWj4BtoMjhVVG90+qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApkZXNjAAAA/AAAACRjcHJ0AAABIAAAACJ3dHB0AAABRAAAABRjaGFkAAABWAAAACxyWFlaAAABhAAAABRnWFlaAAABmAAAABRiWFlaAAABrAAAABRyVFJDAAABwAAAACBnVFJDAAABwAAAACBiVFJDAAABwAAAACBtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAYAAAAcAEMAQwAwAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMPwAABd3///MmAAAHkAAA/ZL///uh///9ogAAA9wAAMBxWFlaIAAAAAAAAG+gAAA48gAAA49YWVogAAAAAAAAYpYAALeJAAAY2lhZWiAAAAAAAAAkoAAAD4UAALbEcGFyYQAAAAAAAwAAAAJmaQAA8qcAAA1ZAAAT0AAACltWUDggNAIAAJAMAJ0BKjAAMAA+bSqQRiQiIaEuO/swgA2JQBihbkGFDZ5/9B22i58D0AdCB/mYgB/AV27RoTOfIB9RaQAzKsbc6jjf6L3eHyq/mpjU9K/Zv+eRcFPdQmZSfnlVy0s5eyBUb5rRW4tCjNp35AAA/v35Wf5S+vkAFNB1UZv+/wAnfkmH+p8YEr2vPYBFLEx/y1XC+SfC6I7mXUZCrS//sWLON43vvHULcRdj+TyyBP/Bf+V8hsGEEbUsL9bp4Pn6PlGCnv7b4VDQ7K6G9jlxTZR109OzESZaYaR3zGYWwI3qcQ240TVDNXJKFilpmmdt7zvaf5s1VEQrUlRJd1lN9tD+Ky3zatNoSFa/VnuHFqDgetsi3QCLSDpoGutstZCPE/DXiBFvZsuTzmMwsIzTQ5wgE6/pEch3XiWx+XM2zgq3dddl1RJkwvvorPqtPms3PieaQ8AI6w0k65jUczEx+WhklcvNEgkNsLzFJp6V7+1H8Ns167kfnJEprq2ZwS9UUw7xMgADEdvBliN4ftVyN/zvGm6XjY4WVCEt8Kj5roZmQ/DNnbcpRwDSfgCksq25yaJdurN86/++fuJ6Guw1ha9HCLWCNqgHeO2xawqPHwQZrYEzP1SaCBk6VzH0dxeNuun63IYaGEZe3sqm2dc8SFlqI6G2FchLAKtINgK4RBB9IJy2X6auwN2H4RUCP61yPvzuW6//nKKBhylMZv2GjIQONsrDlQPciu9ve8F2fX43LQAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAADAAAAADoAQAAQAAADAAAAAAAAAA)
2.4インチの大画面 OLED SSD1309で東方の Bad Apple!!の動画を再生する
2.42inch 128x64 OLED LCD Display module SSD1309で Bad Apple!!を再生します
![EPS32の I2Cの SCLの周波数をクロックアップして SSD1306 OLEDの描画を高速化する方法](data:image/webp;base64,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)
EPS32の I2Cの SCLの周波数をクロックアップして SSD1306 OLEDの描画を高速化する方法
OLED SSD1306で I2Cの SCLK周波数をドーピングで高速化して描画速度を爆速にする方法
![【技適付き】Freenoveの ESP32-S3-WROOMの Basic Starter Kitを買ってみた、カメラ、SD-Card付きの学習キット](data:image/webp;base64,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)
【技適付き】Freenoveの ESP32-S3-WROOMの Basic Starter Kitを買ってみた、カメラ、SD-Card付きの学習キット
Freenove Basic Starter Kit for ESP32-S3-WROOM Onboard Camera Wireless Python C FNK0084
![【技適付き】Freenoveの ESP32-WROVERの Ultimate Starter Kitを買ってみた、カメラ付きの学習キット](data:image/webp;base64,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)
【技適付き】Freenoveの ESP32-WROVERの Ultimate Starter Kitを買ってみた、カメラ付きの学習キット
Freenove Ultimate Starter Kit for ESP32-WROVER Onboard Camera Wireless Python C FNK0047
![LoRa通信を使用してポストに郵便物が投函されるとスマホの LINE宛に通知する IoTの作り方](data:image/webp;base64,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)
LoRa通信を使用してポストに郵便物が投函されるとスマホの LINE宛に通知する IoTの作り方
LoRaを使用した IoT郵便受け LoRa IoT Mailbox Sensor with LINE Messaging API
![ESP32で Slackに「勤怠管理」メッセージをワンボタン操作で投稿する方法](data:image/webp;base64,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)
ESP32で Slackに「勤怠管理」メッセージをワンボタン操作で投稿する方法
Slackの勤怠チャンネルに毎日毎日毎日毎日 手動で投稿するのが馬鹿らしいので ESP32で作った
![ESP32-S3で SPIを使う時に Arduinoでエラーが出た話](data:image/webp;base64,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)
ESP32-S3で SPIを使う時に Arduinoでエラーが出た話
ESP32 S3 SPI error VSPI was not declared in this scope
![ESP32の I2Sで MCLKが必須の CS4344 DAC Audioを使用する方法](data:image/webp;base64,UklGRuIHAABXRUJQVlA4WAoAAAAoAAAALwAALwAASUNDUOABAAAAAAHgbGNtcwQgAABtbnRyUkdCIFhZWiAH4gADABQACQAOAB1hY3NwTVNGVAAAAABzYXdzY3RybAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWhhbmR56b9WWj4BtoMjhVVG90+qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApkZXNjAAAA/AAAACRjcHJ0AAABIAAAACJ3dHB0AAABRAAAABRjaGFkAAABWAAAACxyWFlaAAABhAAAABRnWFlaAAABmAAAABRiWFlaAAABrAAAABRyVFJDAAABwAAAACBnVFJDAAABwAAAACBiVFJDAAABwAAAACBtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAYAAAAcAEMAQwAwAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMPwAABd3///MmAAAHkAAA/ZL///uh///9ogAAA9wAAMBxWFlaIAAAAAAAAG+gAAA48gAAA49YWVogAAAAAAAAYpYAALeJAAAY2lhZWiAAAAAAAAAkoAAAD4UAALbEcGFyYQAAAAAAAwAAAAJmaQAA8qcAAA1ZAAAT0AAACltWUDggGgUAALAZAJ0BKjAAMAA+bSqRRaQioZjrNgBABsS2AE6ZyaFn1z8VeY5za4Eqze8D+q+wDxLfNu9QHmA/VH/O/0D2OeoJ/pv896wD0Cv2N9Lv9j/gz/bX9t/ZZrE3Jj5w9hOQGyP+0cM+vdvd2O/8/+QGqRf538qvVA/qvimRl/8L7Sfji/xfMT9B/9n3Bv5F/N/8d/aP3R/vv/////MPfre23TGJIT2I2qBtHWTBOmiwicmq2yV0X1kR2gzK0jZRvefs7g3uQX6oQMKcjBDRAwQooRwx1ADTwQAA/v5HMOZR/j+QaIVm+GxUIsqwuzH/+92VhLppanbZV/fhmXdVtuZU+VX+A6tGF0MVLYtZZuR9zSQTaALn/E3/r7R01nYf/MZZtibjkD95JHnQ5t1vU/DBD4KXlQPQNX/38nufT9GdpSy2PDw/QdOGd0zBPzQW/A89UNxOL/mfx35bOPg/xo90JqS+WjbQwuPGeYcDb7FeSGXGFVIgdwccmA84v4p0jF/v7B56+bKvx8sd/LEZJF1BS4qbcIJ/8W9kON9locbhFZdZPYQiTfYnV//tcaf6XW7poMqe1CZaIhp4nvOf5pqUc8Vz+fs0zATdZpLjYu+mR/8VDUPDtvJuFy2RVXyleWOVuTjExnONPWSGyGLOB+1l5z72vZvVS3KVloYG+Gd0y/quL8vEWF2pKvGLh//Hep2fkmp0XC6H/Aiqz6d86Zydivxbik5x3NpflSLvhno6g50n/YP0uDKifqGTs//OEawr8QPueeWZz2BeH78kMWryM4WXiREGaoA2uAdmWLYYJDuAdk0UAKwGAg/ia3615YRoaRRPGE2vLzoBsZ8GH4jK3z/X73wZNbBOay4/vbj3bMcKX4dJ9ek0FFxBX5p08A33TDZtOambBmQwwfbOQBecqGCZjzhkBhApbh7hwztIyNwR8JwMEDmee053ziLtafBwIdql11ym63Gx41fwL6wTqxRhXVtYtjCUo+LAazgPqHE/XIoP+2kgTuuMxChLXdjltvqT3eIKx51165/6nxtcCCA6vRBYrcKKNONZ+SziaixLBxQbwXIhKGo2FVO4h48lENvLLDsRMry6DIapmRThV4RtbrJ5N7iIrgr53TxagvgXOcwcHNXjLpgO8JpzoY8wzfJf3DQxupzxT5vij3LGiJjmDPrUdJP/4BCnqgl5VECjhCwZg/11yU9+sdUY4674JHVZbN83SQpnvLD1xhq8FXGqmzT66vcBdlGGGbWDIpf0Nfjj/JwisCyZV6JqPTr1KehdmZv+joZUJtHPVsGBqUwVIBhZ0jJP3WHhs3g1hJwpdA9J7UNPJJcMq42aLHj5MwSh5UO/6qHSkSGegr8xBj0+p0HTJC/yIV1xn/QxEXmTMXkpGf7ExmV9TPrdN/MxOa/jypncuF2us/XfgsLlBUz0iXnGXlpRGqF3m5vA//jTf/zF1caOjwbvbzzHLfmwv6ybN7G/it8pZ07hjOyp9W6r8gwuUf6rccCX1TQtIqrdD/Y3M++FEEaH3Xd+ti7txec2lFyOnXyX2jlGVhX9NMgHGjdv//yUnwySe+iOM89J/6WHNcRgjnO+slFRVrv+chvmAMUGJbRawYdnxxQePOLC2fdlumfdKvmwmMCw5OX9tKWYrvtSa0d3xf3HS9CZ0YBGyI/gx1QNFngfs/Apalbf8XtlWxnwCJGoc5ftck9AUu8AYn8BXlfFzNeNmN65n2RhiQQ/N2AAAABFWElGugAAAEV4aWYAAElJKgAIAAAABgASAQMAAQAAAAEAAAAaAQUAAQAAAFYAAAAbAQUAAQAAAF4AAAAoAQMAAQAAAAIAAAATAgMAAQAAAAEAAABphwQAAQAAAGYAAAAAAAAASAAAAAEAAABIAAAAAQAAAAYAAJAHAAQAAAAwMjEwAZEHAAQAAAABAgMAAKAHAAQAAAAwMTAwAaADAAEAAAD//wAAAqAEAAEAAAAwAAAAA6AEAAEAAAAwAAAAAAAAAA==)
ESP32の I2Sで MCLKが必須の CS4344 DAC Audioを使用する方法
ESP32で MCLKが必須の CS4344が問題無く使えます
![ESP32で SPI接続の Color LCD ST7735S 160x80px IPSを動かす方法](data:image/webp;base64,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)
ESP32で SPI接続の Color LCD ST7735S 160x80px IPSを動かす方法
ESP32 SPI IPS Color LCD ST7735S tutorial
![【ソースコード有】ESP32で I2C接続の OLED SSD1306 128x64pxを動かす方法](data:image/webp;base64,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)
【ソースコード有】ESP32で I2C接続の OLED SSD1306 128x64pxを動かす方法
ESP32 I2C OLED SSD1306 tutorial
![ESP32-WROOMを購入したらヘンテコ技適マークもどきの基板が届いた話](data:image/webp;base64,UklGRp4EAABXRUJQVlA4WAoAAAA4AAAALwAALwAASUNDUOABAAAAAAHgbGNtcwQgAABtbnRyUkdCIFhZWiAH4gADABQACQAOAB1hY3NwTVNGVAAAAABzYXdzY3RybAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWhhbmR56b9WWj4BtoMjhVVG90+qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApkZXNjAAAA/AAAACRjcHJ0AAABIAAAACJ3dHB0AAABRAAAABRjaGFkAAABWAAAACxyWFlaAAABhAAAABRnWFlaAAABmAAAABRiWFlaAAABrAAAABRyVFJDAAABwAAAACBnVFJDAAABwAAAACBiVFJDAAABwAAAACBtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAYAAAAcAEMAQwAwAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMPwAABd3///MmAAAHkAAA/ZL///uh///9ogAAA9wAAMBxWFlaIAAAAAAAAG+gAAA48gAAA49YWVogAAAAAAAAYpYAALeJAAAY2lhZWiAAAAAAAAAkoAAAD4UAALbEcGFyYQAAAAAAAwAAAAJmaQAA8qcAAA1ZAAAT0AAACltBTFBIFwAAAAEP8O//iIigpm0DpvxJbwA9I/qfOIYDAFZQOCC2AQAA0AoAnQEqMAAwAD5tNJRHpCMiISc4C2iADYlpABIIgMi39BxE9PxIGtLce7fHMpRd7pNiRllaYeHIn6Ej7LBfOReX3ZhNSvLcecog3TPj1ZhV1nQq/QWGbIrQwbyqVAAA/RsnHI7LSebyA3+wkb6xP/Fowt3nAYzQL3Mcb94ZpXa8L4cTupwQPrQ8ZU28z76oUc8CE2g/LrrTQ54p2RxHNbmr3eJ9G0KylRIKWqA38MSOsfg2jM/uniMLHSfpqi4Ap+BBqY1na/m1t4DAOUEWAhwzmb6T4MrctIqgcEkcDpZpIe5fFyG6X8jR7gERzG/qJbVjVdRrPwAfuZvLocnNl+6hFKRd+//0iNYrrFYBdRoL8G+yumr2n8UkKauuJRzt09qDe2EZuKY+56GIUC5dVSXboN4WdUY28LytG96BiOCujB2Dp+lFKyHOWu51okxmOkiOHgS0avVxwp9UpryadXd8kJvv6kuScxLU3OfJ9uwUxv8j1K4wRbH6DFkS2P19In8C4inh9Kc+N4nXhvNNhk+7QK/Z+7v1vjIgEfLakTiMHpu0UNkEx+Ywi+76g69MMa/202gARVhJRroAAABFeGlmAABJSSoACAAAAAYAEgEDAAEAAAABAAAAGgEFAAEAAABWAAAAGwEFAAEAAABeAAAAKAEDAAEAAAACAAAAEwIDAAEAAAABAAAAaYcEAAEAAABmAAAAAAAAAC8ZAQDoAwAALxkBAOgDAAAGAACQBwAEAAAAMDIxMAGRBwAEAAAAAQIDAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgBAABAAAAMAAAAAOgBAABAAAAMAAAAAAAAAA=)
ESP32-WROOMを購入したらヘンテコ技適マークもどきの基板が届いた話
Fake ESP32-WROOM Ignore FCC ID and Strange TELEC mark
[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2023 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/hardware/oled_ssd1306_speed_up_drawing/
この翻訳を評価してください
いただいたフィードバックは Google 翻訳の改善に役立てさせていただきます