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