
前回の続きです。
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に表示できました。

コメント