TJpg_Decoder
TJpg_Decoder copied to clipboard
Cant read from SD
I have an st7789 240 * 240 screen
my connections are
#define TFT_MISO -1 #define TFT_MOSI 23 #define TFT_SCLK 18 #define TFT_CS 14 // Chip select control pin #define TFT_DC 21 // Data Command control pin #define TFT_RST 4 // Reset pin (could connect to RST pin) in usersetup
I have a micro sd card adapter with connections as miso 19 mosi 23 cs 5 clk 18
I am not able to read from sd card as its saying file not found,
if I use the esp32 example in tft_espi, my display doesn't work and if I try to use the example in tjpegdecoder I cant get the sdcard to work
// Example for library: // https://github.com/Bodmer/TJpg_Decoder
// This example if for an ESP8266 or ESP32, it renders a Jpeg file // that is stored in a SD card file. The test image is in the sketch // "data" folder (press Ctrl+K to see it). You must save the image // to the SD card using you PC.
// Include the jpeg decoder library #include <TJpg_Decoder.h>
// Include SD #define FS_NO_GLOBALS #include <FS.h> #ifdef ESP32 #include "SPIFFS.h" // ESP32 only #endif
#define SD_CS 5
// Include the TFT library https://github.com/Bodmer/TFT_eSPI #include "SPI.h" #include <TFT_eSPI.h> // Hardware-specific library TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
// This next function will be called during decoding of the jpeg file to // render each block to the TFT. If you use a different TFT library // you will need to adapt this function to suit. 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);
// This might work instead if you adapt the sketch to use the Adafruit_GFX library // tft.drawRGBBitmap(x, y, bitmap, w, h);
// Return 1 to decode next block return 1; }
void setup() { Serial.begin(115200); Serial.println("\n\n Testing TJpg_Decoder library");
// Initialise SD before TFT if (!SD.begin(SD_CS)) { Serial.println(F("SD.begin failed!")); while (1) delay(0); } Serial.println("\r\nInitialisation done.");
// Initialise the TFT tft.begin(); tft.setTextColor(0xFFFF, 0x0000); tft.fillScreen(TFT_BLACK); tft.setSwapBytes(true); // We need to swap the colour bytes (endianess)
// The jpeg image can be scaled by a factor of 1, 2, 4, or 8 TJpgDec.setJpgScale(1);
// The decoder must be given the exact name of the rendering function above TJpgDec.setCallback(tft_output); }
void loop() { tft.fillScreen(TFT_RED);
// Time recorded for test purposes uint32_t t = millis();
// Get the width and height in pixels of the jpeg if you wish uint16_t w = 0, h = 0; TJpgDec.getSdJpgSize(&w, &h, "/Baboon40.jpg"); Serial.print("Width = "); Serial.print(w); Serial.print(", height = "); Serial.println(h);
// Draw the image, top left at 0,0 TJpgDec.drawSdJpg(0, 0, "/Baboon40.jpg");
// How much time did rendering take t = millis() - t; Serial.print(t); Serial.println(" ms");
// Wait before drawing again delay(2000); }