[ESP32 TTGO] Getting Started! #StartingLine #BasicSetup (ft. Image Animation)
95
ESP32_TTGO/AnimationImage/AnimationImage.ino
Normal file
@@ -0,0 +1,95 @@
|
||||
#include "SPIFFS.h"
|
||||
#include <TJpg_Decoder.h>
|
||||
#include "SPI.h"
|
||||
#include <TFT_eSPI.h> // Hardware-specific library
|
||||
|
||||
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
|
||||
int imgNum = 0;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
|
||||
// Initialise SPIFFS
|
||||
if (!SPIFFS.begin()) {
|
||||
Serial.println("SPIFFS initialisation failed!");
|
||||
while (1) yield(); // Stay here twiddling thumbs waiting
|
||||
}
|
||||
Serial.println("\r\nInitialisation done.");
|
||||
listSPIFFS();
|
||||
|
||||
tft.begin();
|
||||
tft.setRotation(1);
|
||||
tft.fillScreen(TFT_BLACK);
|
||||
|
||||
TJpgDec.setJpgScale(1);
|
||||
TJpgDec.setSwapBytes(true);
|
||||
TJpgDec.setCallback(tft_output);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if(imgNum >23) imgNum = 0;
|
||||
String imgPath = "/image_";
|
||||
imgPath += imgNum++;
|
||||
imgPath +=".jpg";
|
||||
|
||||
TJpgDec.drawFsJpg(0, 0, imgPath);
|
||||
}
|
||||
|
||||
void listSPIFFS(void) {
|
||||
Serial.println(F("\r\nListing SPIFFS files:"));
|
||||
static const char line[] PROGMEM = "=================================================";
|
||||
|
||||
Serial.println(FPSTR(line));
|
||||
Serial.println(F(" File name Size"));
|
||||
Serial.println(FPSTR(line));
|
||||
|
||||
fs::File root = SPIFFS.open("/");
|
||||
if (!root) {
|
||||
Serial.println(F("Failed to open directory"));
|
||||
return;
|
||||
}
|
||||
if (!root.isDirectory()) {
|
||||
Serial.println(F("Not a directory"));
|
||||
return;
|
||||
}
|
||||
|
||||
fs::File file = root.openNextFile();
|
||||
while (file) {
|
||||
|
||||
if (file.isDirectory()) {
|
||||
Serial.print("DIR : ");
|
||||
String fileName = file.name();
|
||||
Serial.print(fileName);
|
||||
} else {
|
||||
String fileName = file.name();
|
||||
Serial.print(" " + fileName);
|
||||
// File path can be 31 characters maximum in SPIFFS
|
||||
int spaces = 33 - fileName.length(); // Tabulate nicely
|
||||
if (spaces < 1) spaces = 1;
|
||||
while (spaces--) Serial.print(" ");
|
||||
String fileSize = (String) file.size();
|
||||
spaces = 10 - fileSize.length(); // Tabulate nicely
|
||||
if (spaces < 1) spaces = 1;
|
||||
while (spaces--) Serial.print(" ");
|
||||
Serial.println(fileSize + " bytes");
|
||||
}
|
||||
|
||||
file = root.openNextFile();
|
||||
}
|
||||
|
||||
Serial.println(FPSTR(line));
|
||||
Serial.println();
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
bool tft_output(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t* bitmap)
|
||||
{
|
||||
// Stop further decoding as image is running off bottom of screen
|
||||
if ( y >= tft.height() ) return 0;
|
||||
|
||||
// This function will clip the image block rendering automatically at the TFT boundaries
|
||||
tft.pushImage(x, y, w, h, bitmap);
|
||||
|
||||
// Return 1 to decode next block
|
||||
return 1;
|
||||
}
|
||||
BIN
ESP32_TTGO/AnimationImage/data/image_0.jpg
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_1.jpg
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_10.jpg
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_11.jpg
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_12.jpg
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_13.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_14.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_15.jpg
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_16.jpg
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_17.jpg
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_18.jpg
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_19.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_2.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_20.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_21.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_22.jpg
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_23.jpg
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_3.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_4.jpg
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_5.jpg
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_6.jpg
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_7.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_8.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
ESP32_TTGO/AnimationImage/data/image_9.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |