2015年10月10日

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に表示できました。
posted by boochow at 16:18| Comment(0) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
人気記事