130 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
| /*====================================================================================
 | |
| 
 | |
|   This sketch demonstrates loading images which have been stored as files in the
 | |
|   built-in FLASH memory on a NodeMCU 1.0 (ESP8266 based, ESP-12E Module) rendering the
 | |
|   images onto a 160 x 128 pixel TFT screen.
 | |
| 
 | |
|   The images are stored in the SPI FLASH Filing System (SPIFFS), which effectively
 | |
|   functions like a tiny "hard drive". This filing system is built into the ESP8266
 | |
|   Core that can be loaded from the IDE "Boards manager" menu option. This is at
 | |
|   version 2.3.0 at the time of sketch creation.
 | |
| 
 | |
|   The size of the SPIFFS partition can be set in the IDE as 1Mbyte or 3Mbytes. Either
 | |
|   will work with this sketch. Typically most sketches easily fit within 1 Mbyte so a
 | |
|   3 Mbyte SPIFS partition can be used, in which case it can contain 100's of Jpeg
 | |
|   full screem images.
 | |
| 
 | |
|   The Jpeg library can be found here:
 | |
|   https://github.com/Bodmer/JPEGDecoder
 | |
|  
 | |
|   Images in the Jpeg format can be created using Paint or IrfanView or other picture
 | |
|   editting software.
 | |
| 
 | |
|   Place the images inside the sketch folder, in a folder called "Data".  Then upload
 | |
|   all the files in the folder using the Arduino IDE "ESP8266 Sketch Data Upload" option
 | |
|   in the "Tools" menu:
 | |
|   http://www.esp8266.com/viewtopic.php?f=32&t=10081
 | |
|   https://github.com/esp8266/arduino-esp8266fs-plugin/releases
 | |
|   
 | |
|   This takes some time, but the SPIFFS content is not altered when a new sketch is
 | |
|   uploaded, so there is no need to upload the same files again!
 | |
|   Note: If open, you must close the "Serial Monitor" window to upload data to SPIFFS!
 | |
| 
 | |
|   The IDE will not copy the "data" folder with the sketch if you save the sketch under
 | |
|   another name. It is necessary to manually make a copy and place it in the sketch
 | |
|   folder.
 | |
| 
 | |
|   This sketch includes example images in the Data folder.
 | |
| 
 | |
|   Saving images, uploading and rendering on the TFT screen couldn't be much easier!
 | |
| 
 | |
|   Created by Bodmer 24th Jan 2017 - Tested in Arduino IDE 1.8.0 esp8266 Core 2.3.0
 | |
|   ==================================================================================*/
 | |
| 
 | |
| //====================================================================================
 | |
| //                                  Libraries
 | |
| //====================================================================================
 | |
| // Call up the SPIFFS FLASH filing system this is part of the ESP Core
 | |
| #define FS_NO_GLOBALS
 | |
| #include <FS.h>
 | |
| 
 | |
| // JPEG decoder library
 | |
| #include <JPEGDecoder.h>
 | |
| 
 | |
| // SPI library, built into IDE
 | |
| #include <SPI.h>
 | |
| 
 | |
| // Call up the TFT library
 | |
| #include <TFT_eSPI.h> // Hardware-specific library for ESP8266
 | |
| // The TFT control pins are set in the User_Setup.h file <<<<<<<<<<<<<<<<< NOTE!
 | |
| // that can be found in the "src" folder of the library
 | |
| 
 | |
| // Invoke TFT library
 | |
| TFT_eSPI tft = TFT_eSPI();
 | |
| 
 | |
| //====================================================================================
 | |
| //                                    Setup
 | |
| //====================================================================================
 | |
| void setup()
 | |
| {
 | |
|   Serial.begin(250000); // Used for messages and the C array generator
 | |
| 
 | |
|   delay(10);
 | |
|   Serial.println("NodeMCU decoder test!");
 | |
| 
 | |
|   tft.begin();
 | |
|   tft.setRotation(0);  // 0 & 2 Portrait. 1 & 3 landscape
 | |
|   tft.fillScreen(TFT_BLACK);
 | |
| 
 | |
|   if (!SPIFFS.begin()) {
 | |
|     Serial.println("SPIFFS initialisation failed!");
 | |
|     while (1) yield(); // Stay here twiddling thumbs waiting
 | |
|   }
 | |
|   Serial.println("\r\nInitialisation done.");
 | |
|   listFiles(); // Lists the files so you can see what is in the SPIFFS
 | |
| 
 | |
| }
 | |
| 
 | |
| //====================================================================================
 | |
| //                                    Loop
 | |
| //====================================================================================
 | |
| void loop()
 | |
| {
 | |
|   // Note the / before the SPIFFS file name must be present, this means the file is in
 | |
|   // the root directory of the SPIFFS, e.g. "/Tiger.jpg" for a file called "Tiger.jpg"
 | |
| 
 | |
|   tft.setRotation(0);  // portrait
 | |
|   tft.fillScreen(random(0xFFFF));
 | |
| 
 | |
|   drawJpeg("/EagleEye160.jpg", 0, 16);
 | |
|   delay(2000);
 | |
| 
 | |
|   tft.fillScreen(random(0xFFFF));
 | |
|   drawJpeg("/tiger160.jpg", 4, 0);
 | |
|   delay(2000);
 | |
| 
 | |
|   tft.setRotation(1);  // landscape
 | |
|   //tft.fillScreen(random(0xFFFF));
 | |
|   drawJpeg("/arduino160.jpg", 0, 0);
 | |
|   delay(2000);
 | |
| 
 | |
|   tft.fillScreen(TFT_BLACK);
 | |
|   drawJpeg("/Baboon160.jpg", 0, 4);
 | |
|   delay(2000);
 | |
| 
 | |
|   tft.fillScreen(random(0xFFFF));
 | |
|   drawJpeg("/Mouse160.jpg", 0, 11);
 | |
|   delay(2000);
 | |
| 
 | |
|   // Create arrays from the jpeg images and send them to the serial port for copy and
 | |
|   // pasting into a sketch (used to make arrays fot the TFT_FLASH_Jpeg sketch)
 | |
| 
 | |
|   //createArray("/EagleEye160.jpg");
 | |
|   //createArray("/tiger160.jpg");
 | |
|   //createArray("/Baboon160.jpg");
 | |
|   //createArray("/Mouse160.jpg");
 | |
|   //while(1) yield(); // Stay here
 | |
| }
 | |
| //====================================================================================
 | |
| 
 |