ESP8266のフラッシュメモリをファイルシステムとして使用する(2)

esp826607.jpg

前回の続きです。

SPIFFS(SPI Flash File System)をArduinoからファイルシステムとして使えるようになりましたので、BMPファイルを格納して、そのファイルを以前も使用したTFTカラーLCDに表示させてみます。

このLCDのドライバとしてはAdafruit ST7735 Libraryを使用していますが、スケッチ例として「spitftbitmap」という、SDカードからBMPファイルを読み出して表示するスケッチが付属しています。

このスケッチに含まれるBMP画像描画用の関数は、ちょっと改変するだけで、SPIFFSで利用することが可能です。

スケッチのメイン部分は以下のようになります。

#include <FS.h>
#include <SPI.h>
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library

#define TFT_CS     15
#define TFT_RST    5
#define TFT_DC     4

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);

void setup() {
 // put your setup code here, to run once:
 Serial.begin(115200);
 Serial.println("");
 delay(10);
 
 tft.initR(INITR_BLUETAB);
 tft.fillScreen(ST7735_BLACK);

 SPIFFS.begin();
 bmpDraw("/test1.bmp", 0,0);
}

void loop() {
 // put your main code here, to run repeatedly:

}

TFT液晶関連の結線やソースコードの修正は、以前の記事で書いたとおりですので説明は省略します。

  SPIFFS.begin();
 bmpDraw("/test1.bmp", 0,0);

でSPIFFS上の「test1.bmp」をLCDに表示させています。

bmpDraw関数は、上で書いたST7735 Libraryのサンプルスケッチに含まれる関数です。
サンプルスケッチ「spitftbitmap.ino」からloop{}よりも後の部分(「#define BUFFPIXEL 20」という行以降)をコピーして、さきほどのスケッチの後に貼り付けます。

そして、以下の2箇所を修正します。

修正前: if ((bmpFile = SD.open(filename)) == NULL) {
修正後: if (!(bmpFile = SPIFFS.open(filename,”r”))) {

修正前: bmpFile.seek(pos);
修正後: bmpFile.seek(pos,SeekSet);

以上で、SPIFFS上のビットマップファイルをLCDに表示できました。

コメント