mirror of
https://github.com/Bodmer/TFT_eSPI.git
synced 2025-08-11 00:24:44 +02:00
delete extraneous ino file
This commit is contained in:
@@ -1,162 +0,0 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
Sketch to show how a Sprite can use a four-bit image with
|
|
||||||
a palette to change the appearance of an image while rendering
|
|
||||||
it only once.
|
|
||||||
|
|
||||||
Example for library:
|
|
||||||
https://github.com/Bodmer/TFT_eSPI
|
|
||||||
|
|
||||||
A Sprite is notionally an invisible graphics screen that is
|
|
||||||
kept in the processors RAM. Graphics can be drawn into the
|
|
||||||
Sprite just as it can be drawn directly to the screen. Once
|
|
||||||
the Sprite is completed it can be plotted onto the screen in
|
|
||||||
any position. If there is sufficient RAM then the Sprite can
|
|
||||||
be the same size as the screen and used as a frame buffer.
|
|
||||||
|
|
||||||
A 16 bit Sprite occupies (2 * width * height) bytes in RAM.
|
|
||||||
|
|
||||||
On a ESP8266 Sprite sizes up to 126 x 160 can be accomodated,
|
|
||||||
this size requires 40kBytes of RAM for a 16 bit color depth.
|
|
||||||
|
|
||||||
When 8 bit color depth sprites are created they occupy
|
|
||||||
(width * height) bytes in RAM, so larger sprites can be
|
|
||||||
created, or the RAM required is halved.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// Set delay after plotting the sprite
|
|
||||||
#define DELAY 30
|
|
||||||
|
|
||||||
// Width and height of sprite
|
|
||||||
#define WIDTH 164
|
|
||||||
#define HEIGHT 164
|
|
||||||
|
|
||||||
#include "sample_images.h"
|
|
||||||
|
|
||||||
TFT_eSPI tft = TFT_eSPI(); // Declare object "tft"
|
|
||||||
|
|
||||||
TFT_eSprite spr = TFT_eSprite(&tft); // Declare Sprite object "spr" with pointer to "tft" object
|
|
||||||
|
|
||||||
const int freq = 5000;
|
|
||||||
int screenBrightnessChannel = 0;
|
|
||||||
int resolution = 8;
|
|
||||||
|
|
||||||
byte red = 31; // Red is the top 5 bits of a 16 bit colour value
|
|
||||||
byte green = 0;// Green is the middle 6 bits
|
|
||||||
byte blue = 0; // Blue is the bottom 5 bits
|
|
||||||
byte state = 0;
|
|
||||||
|
|
||||||
int rloop = 0;
|
|
||||||
int incr = 1;
|
|
||||||
|
|
||||||
uint16_t cmap[16];
|
|
||||||
|
|
||||||
void setup()
|
|
||||||
{
|
|
||||||
pinMode(21, OUTPUT);
|
|
||||||
ledcSetup(screenBrightnessChannel, freq, resolution);
|
|
||||||
ledcAttachPin(21, screenBrightnessChannel);
|
|
||||||
ledcWrite(screenBrightnessChannel, 127);
|
|
||||||
|
|
||||||
Serial.begin(9600);
|
|
||||||
Serial.println();
|
|
||||||
|
|
||||||
delay(50);
|
|
||||||
|
|
||||||
// Initialise the TFT registers
|
|
||||||
tft.init();
|
|
||||||
|
|
||||||
spr.setColorDepth(4);
|
|
||||||
|
|
||||||
// Create a sprite of defined size
|
|
||||||
spr.createSprite(WIDTH, HEIGHT);
|
|
||||||
|
|
||||||
// Clear the TFT screen to black
|
|
||||||
tft.fillScreen(TFT_BLACK);
|
|
||||||
|
|
||||||
// push the image - only need to do this once.
|
|
||||||
spr.pushImage(2, 2, 160, 160, (uint16_t *)stars);
|
|
||||||
|
|
||||||
for (int i = 0; i < 16; i++)
|
|
||||||
cmap[i] = rainbow();
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop(void)
|
|
||||||
{
|
|
||||||
// create a palette with the defined colors and push it.
|
|
||||||
spr.createPalette(cmap, 16);
|
|
||||||
spr.pushSprite(tft.width() / 2 - WIDTH / 2, tft.height() / 2 - HEIGHT / 2);
|
|
||||||
|
|
||||||
// update the colors
|
|
||||||
for (int i = 0; i < 15; i++) {
|
|
||||||
cmap[i] = cmap[i + 1];
|
|
||||||
}
|
|
||||||
if (incr == 2) {
|
|
||||||
(void)rainbow(); // skip alternate steps
|
|
||||||
}
|
|
||||||
cmap[15] = rainbow();
|
|
||||||
rloop += incr;
|
|
||||||
if (rloop > 0xc0) {
|
|
||||||
incr = incr == 2 ? 1 : 2;
|
|
||||||
Serial.printf("incr %d, rloop %d\r\n", incr, rloop);
|
|
||||||
rloop = 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
delay(DELAY);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// #########################################################################
|
|
||||||
// Return a 16 bit rainbow colour
|
|
||||||
// #########################################################################
|
|
||||||
unsigned int rainbow()
|
|
||||||
{
|
|
||||||
switch (state) {
|
|
||||||
case 0:
|
|
||||||
green ++;
|
|
||||||
if (green == 64) {
|
|
||||||
green = 63;
|
|
||||||
state = 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
red--;
|
|
||||||
if (red == 255) {
|
|
||||||
red = 0;
|
|
||||||
state = 2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
blue ++;
|
|
||||||
if (blue == 32) {
|
|
||||||
blue = 31;
|
|
||||||
state = 3;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
green --;
|
|
||||||
if (green == 255) {
|
|
||||||
green = 0;
|
|
||||||
state = 4;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
red ++;
|
|
||||||
if (red == 32) {
|
|
||||||
red = 31;
|
|
||||||
state = 5;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
blue --;
|
|
||||||
if (blue == 255) {
|
|
||||||
blue = 0;
|
|
||||||
state = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return red << 11 | green << 5 | blue;
|
|
||||||
}
|
|
||||||
|
|
Reference in New Issue
Block a user