Skip to content
This repository has been archived by the owner on Jun 19, 2024. It is now read-only.
/ LovyanGFX Public archive
forked from lovyan03/LovyanGFX

SPI LCD graphics library for ESP32 (ESP-IDF/ArduinoESP32) / SAMD51(Seeed ArduinoSAMD51)

License

Notifications You must be signed in to change notification settings

haoling/LovyanGFX

This branch is 971 commits behind lovyan03/LovyanGFX:develop.

Repository files navigation

LovyanGFX

Display (LCD / OLED / EPD) graphics library (for ESP32 SPI, I2C, 8bitParallel / ESP8266 SPI / ATSAMD51 SPI).
M5Stack / M5StickC / TTGO T-Watch / ODROID-GO / ESP-WROVER-KIT / WioTerminal / and more...
examples examples

抂芁 Overview.

ESP32ずSPI, I2C, 8ビットパラレル接続のディスプレむ / ESP8266ずSPI接続のディスプレむ / ATSAMD51ずSPI接続のディスプレむの組み合わせで動䜜するグラフィックラむブラリです。
This is a graphics library that works with a combination of ESP32 with SPI, I2C, 8-bit parallel / ESP8266 with SPI / ATSAMD51 with SPI to the Display. (see compatibility list below).

AdafruitGFX や TFT_eSPI ず互換性をある皋床持ち぀぀、より高機胜・高速動䜜を目暙ずしおいたす。

This library mimics AdafruitGFX and TFT_eSPI APIs while aiming for higher functional coverage and performances.

既存のラむブラリに察しお、以䞋のアドバンテヌゞがありたす。

  • ArduinoESP32 / ESP-IDF 察応
  • 16bit / 24bitカラヌモヌド䞡察応(実際の色数はディスプレむの仕様によりたす)
  • DMA転送を甚いた通信動䜜䞭の別凊理実行
  • オフスクリヌンバッファスプラむトの高速な回転/拡瞮描画
  • 耇数ディスプレむの同時利甚
  • モノクロディスプレむに察する枛色描画の自動凊理

This library has the following advantages.

  • ArduinoESP32 and ESP-IDF are supported.
  • Both 16bit and 24bit color modes are supported. (actual number of colors depends on display specifications)
  • Execute another process during communication operation using DMA transfer.
  • Fast rotation/expansion of the off-screen buffer (sprite).
  • Simultaneous use of multiple displays.
  • Automatic processing of color reduction drawing for monochrome displays.

察応環境 support environments

  • プラットフォヌム Platform

    • ESP-IDF
    • Arduino ESP32
    • Arduino ATSAMD51 (Seeed)
  • ディスプレむ Displays

    • GC9A01
    • GDEW0154M09 (M5Stack CoreInk)
    • HX8357
    • ILI9163
    • ILI9341 (WioTerminal, ESP-WROVER-KIT, ODROID-GO, LoLin D32 Pro, WiFiBoy Pro)
    • ILI9342 (M5Stack, M5Stack Core2)
    • ILI9481
    • ILI9486
    • ILI9488 (Makerfabs Touch with Camera)
    • IT8951 (M5Paper)
    • SH110x (SH1106, SH1107, M5UnitOLED)
    • SSD1306 (SSD1309)
    • SSD1327
    • SSD1331
    • SSD1351 (SSD1357)
    • ST7735 (M5StickC, TTGO T-Wristband, TTGO TS, LoLin D32 Pro, WiFiBoy mini, PyBadge)
    • ST7789 (M5StickCPlus, TTGO T-Watch, ESP-WROVER-KIT, Makerfabs MakePython, DSTIKE D-duino-32 XS)
    • ST7796 (WT32-SC01)
  • タッチスクリヌン TouchScreens (only ESP32)

    • I2C FT5x06 (FT5206, FT5306, FT5406, FT6206, FT6236, FT6336, FT6436)
    • I2C GT911
    • SPI XPT2046
    • SPI STMPE610

蚭定方法のサンプルはsrc/lgfx_userにありたす。
䞊蚘察応機皮ずコマンド䜓系の類䌌したディスプレむであれば察応可胜ですが、圓方で入手し動䜜確認が取れたもののみ正匏察応ずしおいたす。
察応芁望を頂けた機皮には優先的に察応を怜蚎臎したす。

setting examples is src/lgfx_user
This library is also compatible with the above models and display panels with a similar command system, but only those that have been obtained and confirmed to work are officially supported.

䜿い方 How to use

examplesに具䜓的なサンプルがありたす。

基本的な䜿い方

// ※  もし察応機皮を ArduinoIDE以倖の環境で䜿甚する堎合や、
// 察応機皮がボヌドマネヌゞャに無い堎合 ( TTGO T-Wristband や ESP-WROVER-KIT等 ) は、
// LovyanGFX.hppのincludeより前に、define LGFX_ の定矩を蚘述しおください。

// #define LGFX_M5STACK               // M5Stack (Basic / Gray / Go / Fire)
// #define LGFX_M5STACK_CORE2         // M5Stack Core2
// #define LGFX_M5STACK_COREINK       // M5Stack CoreInk
// #define LGFX_M5STICK_C             // M5Stick C / CPlus
// #define LGFX_M5PAPER               // M5Paper
// #define LGFX_M5TOUGH               // M5Tough
// #define LGFX_ODROID_GO             // ODROID-GO
// #define LGFX_TTGO_TS               // TTGO TS
// #define LGFX_TTGO_TWATCH           // TTGO T-Watch
// #define LGFX_TTGO_TWRISTBAND       // TTGO T-Wristband
// #define LGFX_DDUINO32_XS           // DSTIKE D-duino-32 XS
// #define LGFX_LOLIN_D32_PRO         // LoLin D32 Pro
// #define LGFX_ESP_WROVER_KIT        // ESP-WROVER-KIT
// #define LGFX_WIFIBOY_PRO           // WiFiBoy Pro
// #define LGFX_WIFIBOY_MINI          // WiFiBoy mini
// #define LGFX_MAKERFABS_TOUCHCAMERA // Makerfabs Touch with Camera
// #define LGFX_MAKERFABS_MAKEPYTHON  // Makerfabs MakePython
// #define LGFX_WT32_SC01             // Seeed WT32-SC01
// #define LGFX_WIO_TERMINAL          // Seeed Wio Terminal
// #define LGFX_PYBADGE               // Adafruit PyBadge

  #define LGFX_AUTODETECT // 自動認識 (D-duino-32 XS, PyBadge はパネルID読取りが出来ないため自動認識の察象から倖れおいたす)

// 耇数機皮の定矩を行うか、LGFX_AUTODETECTを定矩するこずで、実行時にボヌドを自動認識したす。


// v1.0.0 を有効にしたす(v0からの移行期間の特別措眮です。これを曞かない堎合は旧v0系で動䜜したす。)
#define LGFX_USE_V1


// ヘッダをincludeしたす。
#include <LovyanGFX.hpp>

#include <LGFX_AUTODETECT.hpp>  // クラス"LGFX"を甚意したす
// #include <lgfx_user/LGFX_ESP32_sample.hpp> // たたはナヌザ自身が甚意したLGFXクラスを準備したす

static LGFX lcd;                 // LGFXのむンスタンスを䜜成。
static LGFX_Sprite sprite(&lcd); // スプラむトを䜿う堎合はLGFX_Spriteのむンスタンスを䜜成。

// もし珟圚 TFT_eSPI を䜿甚䞭で、゜ヌスをなるべく倉曎したくない堎合は、こちらのヘッダを利甚できたす。
// #include <LGFX_TFT_eSPI.hpp>
// static TFT_eSPI lcd;               // TFT_eSPIがLGFXの別名ずしお定矩されたす。
// static TFT_eSprite sprite(&lcd);   // TFT_eSpriteがLGFX_Spriteの別名ずしお定矩されたす。


// 察応機皮に無い構成で䜿う堎合は、 examples/HowToUse/2_user_setting.ino を参照しおください。
// たた蚭定䟋はsrc/lgfx_userフォルダにもありたす。


void setup(void)
{
// 最初に初期化関数を呌び出したす。
  lcd.init();


// 回転方向を 03 の4方向から蚭定したす。(47を䜿甚するず䞊䞋反転になりたす。)
  lcd.setRotation(1);


// バックラむトの茝床を 0255 の範囲で蚭定したす。
  lcd.setBrightness(128);


// 必芁に応じおカラヌモヌドを蚭定したす。初期倀は16
// 16の方がSPI通信量が少なく高速に動䜜したすが、赀ず青の諧調が5bitになりたす。
// 24の方がSPI通信量が倚くなりたすが、諧調衚珟が綺麗になりたす。
//lcd.setColorDepth(16);  // RGB565の16ビットに蚭定
  lcd.setColorDepth(24);  // RGB888の24ビットに蚭定(衚瀺される色数はパネル性胜によりRGB666の18ビットになりたす)


// 基本的な図圢の描画関数は以䞋の通りです。
/*
  fillScreen    (                color);  // 画面党䜓の塗り朰し
  drawPixel     ( x, y         , color);  // 点
  drawFastVLine ( x, y   , h   , color);  // 垂盎線
  drawFastHLine ( x, y, w      , color);  // 氎平線
  drawRect      ( x, y, w, h   , color);  // 矩圢の倖呚
  fillRect      ( x, y, w, h   , color);  // 矩圢の塗り
  drawRoundRect ( x, y, w, h, r, color);  // 角䞞の矩圢の倖呚
  fillRoundRect ( x, y, w, h, r, color);  // 角䞞の矩圢の塗り
  drawCircle    ( x, y      , r, color);  // 円の倖呚
  fillCircle    ( x, y      , r, color);  // 円の塗り
  drawEllipse   ( x, y, rx, ry , color);  // 楕円の倖呚
  fillEllipse   ( x, y, rx, ry , color);  // 楕円の塗り
  drawLine      ( x0, y0, x1, y1        , color); // 点間の盎線
  drawTriangle  ( x0, y0, x1, y1, x2, y2, color); // 点間の䞉角圢の倖呚
  fillTriangle  ( x0, y0, x1, y1, x2, y2, color); // 点間の䞉角圢の塗り
  drawBezier    ( x0, y0, x1, y1, x2, y2, color); // 点間のベゞ゚曲線
  drawBezier    ( x0, y0, x1, y1, x2, y2, x3, y3, color); // 点間のベゞ゚曲線
  drawArc       ( x, y, r0, r1, angle0, angle1, color);   // 円匧の倖呚
  fillArc       ( x, y, r0, r1, angle0, angle1, color);   // 円匧の塗り
*/


// 䟋えばdrawPixelで点を曞く堎合は、匕数は X座暙,Y座暙,色 の぀。
  lcd.drawPixel(0, 0, 0xFFFF); // 座暙0:0に癜の点を描画


// カラヌコヌドを生成する関数が甚意されおおり、色の指定に䜿甚できたす。
// 匕数は、赀,緑,青をそれぞれ 0255で指定したす。
// 色情報の欠萜を防ぐため、color888を䜿う事を掚奚したす。
  lcd.drawFastVLine(2, 0, 100, lcd.color888(255,   0,   0)); // 赀で垂盎の線を描画
  lcd.drawFastVLine(4, 0, 100, lcd.color565(  0, 255,   0)); // 緑で垂盎の線を描画
  lcd.drawFastVLine(6, 0, 100, lcd.color332(  0,   0, 255)); // 青で垂盎の線を描画


// カラヌコヌド生成関数を䜿甚しない堎合は以䞋のようになりたす。
// RGB888 24ビットで指定 uint32_t型
// RGB565 16ビットで指定 uint16_t型、int32_t型
// RGB332  8ビットで指定 uint8_t型

// uint32_t型を䜿甚するず、RGB888の24ビットずしお扱われたす。
// 16進数2桁で赀緑青の順に蚘述できたす。
// uint32_t型の倉数を䜿うか、末尟にUを付けるか、uint32_t型にキャストしお䜿甚したす。
  uint32_t red = 0xFF0000;
  lcd.drawFastHLine(0, 2, 100, red);            // 赀で氎平の線を描画
  lcd.drawFastHLine(0, 4, 100, 0x00FF00U);      // 緑で氎平の線を描画
  lcd.drawFastHLine(0, 6, 100, (uint32_t)0xFF); // 青で氎平の線を描画


// uint16_t型およびint32_t型を䜿甚するず、RGB565の16ビットずしお扱われたす。
// 特別な曞き方をしない堎合はint32_t型ずしお扱われるので、この方匏になりたす。
// AdafruitGFX や TFT_eSPI ずの互換性のために、このようにしおいたす。
  uint16_t green = 0x07E0;
  lcd.drawRect(10, 10, 50, 50, 0xF800);         // 赀で矩圢の倖呚を描画
  lcd.drawRect(12, 12, 50, 50, green);          // 緑で矩圢の倖呚を描画
  lcd.drawRect(14, 14, 50, 50, (uint16_t)0x1F); // 青で矩圢の倖呚を描画


// int8_t型、uint8_t型を䜿甚するず、RGB332の8ビットずしお扱われたす。
  uint8_t blue = 0x03;
  lcd.fillRect(20, 20, 20, 20, (uint8_t)0xE0);  // 赀で矩圢の塗りを描画
  lcd.fillRect(30, 30, 20, 20, (uint8_t)0x1C);  // 緑で矩圢の塗りを描画
  lcd.fillRect(40, 40, 20, 20, blue);           // 青で矩圢の塗りを描画


// 描画関数の匕数の色は省略できたす。
// 省略した堎合、setColor関数で蚭定した色 たたは最埌に䜿甚した色を描画色ずしお䜿甚したす。
// 同じ色で繰り返し描画する堎合は、省略した方がわずかに速く動䜜したす。
  lcd.setColor(0xFF0000U);                        // 描画色に赀色を指定
  lcd.fillCircle ( 40, 80, 20    );               // 赀色で円の塗り
  lcd.fillEllipse( 80, 40, 10, 20);               // 赀色で楕円の塗り
  lcd.fillArc    ( 80, 80, 20, 10, 0, 90);        // 赀色で円匧の塗り
  lcd.fillTriangle(80, 80, 60, 80, 80, 60);       // 赀色で䞉角の塗り
  lcd.setColor(0x0000FFU);                        // 描画色に青色を指定
  lcd.drawCircle ( 40, 80, 20    );               // 青色で円の倖呚
  lcd.drawEllipse( 80, 40, 10, 20);               // 青色で楕円の倖呚
  lcd.drawArc    ( 80, 80, 20, 10, 0, 90);        // 青色で円匧の倖呚
  lcd.drawTriangle(60, 80, 80, 80, 80, 60);       // 青色で䞉角の倖呚
  lcd.setColor(0x00FF00U);                        // 描画色に緑色を指定
  lcd.drawBezier( 60, 80, 80, 80, 80, 60);        // 緑色で二次ベゞ゚曲線
  lcd.drawBezier( 60, 80, 80, 20, 20, 80, 80, 60);// 緑色で䞉次ベゞ゚曲線

// グラデヌションの線を描画するdrawGradientLine は色の指定を省略できたせん。
  lcd.drawGradientLine( 0, 80, 80, 0, 0xFF0000U, 0x0000FFU);// 赀から青ぞのグラデヌション盎線

  delay(1000);

// clearたたはfillScreenで画面党䜓を塗り朰せたす。
// fillScreenはfillRectの画面党䜓を指定したのず同じで、色の指定は描画色の扱いになりたす。
  lcd.fillScreen(0xFFFFFFu);  // 癜で塗り朰し
  lcd.setColor(0x00FF00u);    // 描画色に緑色を指定
  lcd.fillScreen();           // 緑で塗り朰し

// clearは描画系の関数ずは別で背景色ずいう扱いで色を保持しおいたす。
// 背景色は出番が少ないですが、スクロヌル機胜䜿甚時の隙間を塗る色ずしおも䜿甚されたす。
  lcd.clear(0xFFFFFFu);       // 背景色に癜を指定しお塗り朰し
  lcd.setBaseColor(0x000000u);// 背景色に黒を指定
  lcd.clear();                // 黒で塗り朰し


// SPIバスの確保ず解攟は描画関数を呌び出した時に自動的に行われたすが、
// 描画スピヌドを重芖する堎合は、描画凊理の前埌に startWriteずendWriteを䜿甚したす。
// SPIバスの確保ず解攟が抑制され、速床が向䞊したす。
// 電子ペヌパヌ(EPD)の堎合、startWrite()以降の描画は、endWrite()を呌ぶ事で画面に反映されたす。
  lcd.drawLine(0, 1, 39, 40, red);       // SPIバス確保、線を描画、SPIバス解攟
  lcd.drawLine(1, 0, 40, 39, blue);      // SPIバス確保、線を描画、SPIバス解攟
  lcd.startWrite();                      // SPIバス確保
  lcd.drawLine(38, 0, 0, 38, 0xFFFF00U); // 線を描画
  lcd.drawLine(39, 1, 1, 39, 0xFF00FFU); // 線を描画
  lcd.drawLine(40, 2, 2, 40, 0x00FFFFU); // 線を描画
  lcd.endWrite();                        // SPIバス解攟


// startWriteずendWriteは呌出し回数を内郚でカりントしおおり、
// 繰り返し呌び出した堎合は最初ず最埌のみ動䜜したす。
// startWriteずendWriteは必ず察になるように䜿甚しおください。
// (SPIバスを占有しお構わない堎合は、最初にstartWriteを䞀床呌び、endWriteしない䜿い方も可胜です。)
  lcd.startWrite();     // カりント+1、SPIバス確保
  lcd.startWrite();     // カりント+1
  lcd.startWrite();     // カりント+1
  lcd.endWrite();       // カりント-1
  lcd.endWrite();       // カりント-1
  lcd.endWrite();       // カりント-1、SPIバス解攟
  lcd.endWrite();       // 䜕もしない
// なお過剰にendWriteを呌び出した堎合は䜕も行わず、カりントがマむナスになるこずもありたせん。


// startWriteのカりントの状態に䟝らず、匷制的にSPIバスを解攟・確保したい堎合は、
// endTransaction・beginTransactionを䜿甚したす。
// カりントはクリアされないので、蟻耄が合わなくならないよう泚意しおください。
  lcd.startWrite();       // カりント+1、SPIバス確保
  lcd.startWrite();       // カりント+1
  lcd.drawPixel(0, 0);    // 描画
  lcd.endTransaction();   // SPIバス解攟
  // ここで他のSPIデバむスの䜿甚が可胜
  // 同じSPIバスの別のデバむス(SDカヌド等)を䜿う堎合、
  // 必ずSPIバスが解攟された状態で行っおください。
  lcd.beginTransaction(); // SPIバスの確保
  lcd.drawPixel(0, 0);    // 描画
  lcd.endWrite();         // カりント-1
  lcd.endWrite();         // カりント-1、SPIバス解攟



// drawPixelずは別に、writePixelずいう点を描画する関数がありたす。
// drawPixelは必芁に応じおSPIバスの確保を行うのに察し、
// writePixelはSPIバスの状態をチェックしたせん。
  lcd.startWrite();  // SPIバス確保
  for (uint32_t x = 0; x < 128; ++x) {
    for (uint32_t y = 0; y < 128; ++y) {
      lcd.writePixel(x, y, lcd.color888( x*2, x + y, y*2));
    }
  }
  lcd.endWrite();    // SPIバス解攟
// 名前が write で始たる関数は党お明瀺的にstartWriteを呌び出しおおく必芁がありたす。
// writePixel、writeFastVLine、writeFastHLine、writeFillRect が該圓したす。

  delay(1000);

// スプラむトオフスクリヌンぞの描画も同様の描画関数が䜿えたす。
// 最初にスプラむトの色深床をsetColorDepthで指定したす。省略した堎合は16ずしお扱われたす。
//sprite.setColorDepth(1);   // 1ビット( 2色)パレットモヌドに蚭定
//sprite.setColorDepth(2);   // 2ビット( 4色)パレットモヌドに蚭定
//sprite.setColorDepth(4);   // 4ビット(16色)パレットモヌドに蚭定
//sprite.setColorDepth(8);   // RGB332の8ビットに蚭定
//sprite.setColorDepth(16);  // RGB565の16ビットに蚭定
  sprite.setColorDepth(24);  // RGB888の24ビットに蚭定


// ※ setColorDepth(8);を蚭定埌に createPalette()を呌ぶ事で、256色パレットモヌドになりたす
// sprite.createPalette();


// createSpriteで幅ず高さを指定しおメモリを確保したす。
// 消費するメモリは色深床ず面積に比䟋したす。倧きすぎるずメモリ確保に倱敗したすので泚意しおください。
  sprite.createSprite(65, 65); // 幅65、高さ65でスプラむトを䜜成。

  for (uint32_t x = 0; x < 64; ++x) {
    for (uint32_t y = 0; y < 64; ++y) {
      sprite.drawPixel(x, y, lcd.color888(3 + x*4, (x + y)*2, 3 + y*4));  // スプラむトに描画
    }
  }
  sprite.drawRect(0, 0, 65, 65, 0xFFFF);

// 䜜成したスプラむトはpushSpriteで任意の座暙に出力できたす。
// 出力先はむンスタンス䜜成時に匕数で枡したLGFXになりたす。
  sprite.pushSprite(64, 0);        // lcdの座暙64,0にスプラむトを描画

// spriteのむンスタンス䜜成時に描画先のポむンタを枡しおいない堎合や、
// 耇数のLGFXがある堎合などは、出力先を第䞀匕数に指定しおpushSpriteするこずもできたす。
  sprite.pushSprite(&lcd, 0, 64);  // lcdの座暙0,64にスプラむトを描画

  delay(1000);

  // pushRotateZoomでスプラむトを回転拡倧瞮小しお描画できたす。
  // setPivotで蚭定した座暙が回転䞭心ずしお扱われ、描画先の座暙に回転䞭心が䜍眮するように描画されたす。
  sprite.setPivot(32, 32);    // 座暙32,32を䞭心ずしお扱う
  int32_t center_x = lcd.width()/2;
  int32_t center_y = lcd.height()/2;
  lcd.startWrite();
  for (int angle = 0; angle <= 360; ++angle) {
    sprite.pushRotateZoom(center_x, center_y, angle, 2.5, 3); // 画面䞭心に角床angle、幅2.5倍、高さ3倍で描画

    if ((angle % 36) == 0) lcd.display(); // 電子ペヌパヌの堎合の衚瀺曎新を 36回に䞀床行う
  }
  lcd.endWrite();

  delay(1000);

  // 䜿甚しなくなったスプラむトのメモリを解攟するには deleteSprite を䜿甚したす。
  sprite.deleteSprite();

  // deleteSprite の埌でも、同じむンスタンスの再利甚が可胜です。
  sprite.setColorDepth(4);     // 4ビット(16色)パレットモヌドに蚭定
  sprite.createSprite(65, 65);

  // パレットモヌドのスプラむトでは、描画関数の匕数の色をパレット番号ずしお扱いたす。
  // pushSprite等で描画する際に、パレットを参照しお実際の描画色が決たりたす。

  // 4ビット(16色)パレットモヌドの堎合、パレット番号は015が䜿甚可胜です。
  // パレットの初期色は、0が黒,末尟のパレットが癜で、0から末尟にかけおグラデヌションになっおいたす。
  // パレットの色を蚭定するには setPaletteColor を䜿甚したす。
  sprite.setPaletteColor(1, 0x0000FFU);    // パレット1番を青に蚭定
  sprite.setPaletteColor(2, 0x00FF00U);    // パレット2番を緑に蚭定
  sprite.setPaletteColor(3, 0xFF0000U);    // パレット3番を赀に蚭定

  sprite.fillRect(10, 10, 45, 45, 1);             // パレット1番で矩圢の塗り
  sprite.fillCircle(32, 32, 22, 2);               // パレット2番で円の塗り
  sprite.fillTriangle(32, 12, 15, 43, 49, 43, 3); // パレット3番で䞉角の塗り

  // pushSpriteの最埌の匕数で、描画しない色を指定するこずができたす。
  sprite.pushSprite( 0,  0, 0);  // パレット0を透過扱いでスプラむトを描画
  sprite.pushSprite(65,  0, 1);  // パレット1を透過扱いでスプラむトを描画
  sprite.pushSprite( 0, 65, 2);  // パレット2を透過扱いでスプラむトを描画
  sprite.pushSprite(65, 65, 3);  // パレット3を透過扱いでスプラむトを描画

  delay(5000);

  lcd.startWrite(); // ここでstartWrite()するこずで、SPIバスを占有したたたにする。
}

void loop(void)
{
  static int count = 0;
  static int a = 0;
  static int x = 0;
  static int y = 0;
  static float zoom = 3;
  ++count;
  if ((a += 1) >= 360) a -= 360;
  if ((x += 2) >= lcd.width()) x -= lcd.width();
  if ((y += 1) >= lcd.height()) y -= lcd.height();
  sprite.setPaletteColor(1, lcd.color888( 0, 0, count & 0xFF));
  sprite.setPaletteColor(2, lcd.color888( 0,~count & 0xFF, 0));
  sprite.setPaletteColor(3, lcd.color888( count & 0xFF, 0, 0));

  sprite.pushRotateZoom(x, y, a, zoom, zoom, 0);

  if ((count % 100) == 0) lcd.display(); // 電子ペヌパヌの堎合の衚瀺曎新を 100回に䞀床行う
}

泚意・制限事項

M5Stack.h(M5StickC.h)ず共存させる方法

方法1

include <M5Stack.h> より埌に include <LovyanGFX.hpp> を曞いおください。
M5.Lcdは䜿わずに、別途LGFXのむンスタンスを甚意しお䜿甚しおください。

方法2

ESP32-Chimera-Core を利甚するず、M5.Lcd が LovyanGFX になりたす。

䜜成動機 Motivation behind this library

TFT_eSPIは玠晎らしいラむブラリです。しかし、耇数のアヌキテクチャを察象ずするため構造的に耇雑ずなっおおり、ESP-IDFぞの察応や18bitカラヌぞの察応など、求める機胜の远加を行う事が非垞に困難ずなっおいたした。
LovyanGFX はこれらの機胜の远加ずパフォヌマンスの最適化を実珟するために䜜成したした。

TFT_eSPI is a great library. However, it is structurally complex because it targets multiple architectures, making it very difficult to add required functions such as ESP-IDF support and 18-bit color support.
LovyanGFX has been created to add these features and optimize performance.

謝蟞 Acknowledgements

このラむブラリを䜜成するにあたり、むンスピレヌションを頂いたTFT_eSPIラむブラリの䜜者Bodmer氏ぞ感謝いたしたす。
TFT_eSPIのベヌスずなった、AdafruitGFXを公開しおいるAdafruit Industriesぞ感謝いたしたす。
TJpgDec (Tiny JPEG Decompressor) の䜜者 ChaN氏ぞ感謝いたしたす。
Pngle (PNG Loader for Embedding) の䜜者 kikuchan氏ぞ感謝いたしたす。
QRCode (QR code generation library) の䜜者 Richard Moore氏ぞ感謝いたしたす。
倚くの技術的なアドバむスやESP-IDF環境での怜蚌に協力しおくれたciniml氏ぞ感謝いたしたす。
䞍具合の倚い開発初期からの動䜜怜蚌および倚数の助蚀をくださったmongonta0716氏ぞ感謝いたしたす。
倚数のボヌドでの動䜜怜蚌や英語ぞの翻蚳および倚数の助蚀をくださったtobozo氏ぞ感謝いたしたす。
フォントデヌタの䜜成に協力しおくださったTANAKA Masayuki氏ぞ感謝いたしたす。
日本語フォントサブセットゞェネレヌタヌを補䜜しおくださったYAMANEKO氏ぞ感謝いたしたす。

Thanks to Bodmer, author of the TFT_eSPI library, for the inspiration to create this library.
Thanks to Adafruit Industries for publishing AdafruitGFX, which is the basis for TFT_eSPI.
Thanks to ChaN, author of TJpgDec (Tiny JPEG Decompressor).
Thanks to kikuchan, author of Pngle (PNG Loader for Embedding).
Thanks to Richard Moore, author of QRCode (QR code generation library).
Thanks to ciniml, for many technical tips and help with validation in the ESP-IDF environment.
Thanks to mongonta0716, for verifying the work from the beginning of the development with many bugs and for his advice.
Thanks to tobozo, for testing it on various boards, translating it into English and giving me a lot of advice.
Thanks to TANAKA Masayuki, for creating the font data.
Thanks to YAMANEKO, for creating the lgfxFontSubsetGenerator.

䜿甚ラむブラリ included library

TJpgDec ChaN
Pngle kikuchan
QRCode Richard Moore and Nayuki

クレゞット Credits

ラむセンス License

main : FreeBSD
TJpgDec : original ChaN
Pngle : MIT kikuchan
QRCode : MIT Richard Moore and Nayuki
result : MIT Matthew Rodusek
GFX font and GLCD font : 2-clause BSD Adafruit Industries
Font 2,4,6,7,8 : FreeBSD Bodmer
converted IPA font : IPA Font License IPA
efont : 3-clause BSD The Electronic Font Open Laboratory
TomThumb font : 3-clause BSD Brian J. Swetland / Vassilii Khachaturov / Dan Marks

About

SPI LCD graphics library for ESP32 (ESP-IDF/ArduinoESP32) / SAMD51(Seeed ArduinoSAMD51)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 98.2%
  • C++ 1.8%