Add libraries, picocalc notes.

This commit is contained in:
2025-04-01 18:28:52 -07:00
parent 1c3052c977
commit e77a69ce91
598 changed files with 475037 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
/*
Sketch to show creation of a 1bpp sprite with a transparent
background, then plot it on the TFT.
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 1 bit Sprite occupies (width * height)/8 bytes in RAM. So,
for example, a 320 x 240 pixel Sprite occupies 9600 bytes.
*/
// A new setBitmapColor(fg_color, bg_color) function allows
// any 2 colours to be used for the 1 bit sprite.
// One colour can also be defined as transparent when
// rendering to the screen.
#include <TFT_eSPI.h> // Include the graphics library (this includes the sprite functions)
TFT_eSPI tft = TFT_eSPI(); // Create object "tft"
TFT_eSprite img = TFT_eSprite(&tft); // Create Sprite object "img" with pointer to "tft" object
// the pointer is used by pushSprite() to push it onto the TFT
#define BITS_PER_PIXEL 1 // How many bits per pixel in Sprite
// =========================================================================
void setup(void) {
Serial.begin(250000);
tft.init();
tft.setRotation(0);
}
// =========================================================================
void loop() {
tft.fillScreen(TFT_NAVY);
// Draw 10 sprites containing a "transparent" colour
for (int i = 0; i < 10; i++)
{
int x = random(240 - 70);
int y = random(320 - 80);
int c = random(0x10000); // Random colour 0 - 0xFFFF
drawStar(x, y, c);
}
delay(2000);
// Now go bananas and draw 500 more
for (int i = 0; i < 500; i++)
{
int x = random(240 - 70);
int y = random(320 - 80);
int c = random(0x10000); // Random colour
drawStar(x, y, c);
yield(); // Stop watchdog reset
}
delay(2000);
}
// =========================================================================
// Create sprite, plot graphics in it, plot to screen, then delete sprite
// =========================================================================
void drawStar(int x, int y, int star_color)
{
// 1 bpp colour values can only be 1 or 0 (one or zero)
uint16_t transparent = 0; // The transparent colour, can only be 1 or 0
// Create an 1 bit (2 colour) sprite 70x80 pixels (uses 70*80/8 = 700 bytes of RAM)
// Colour depths of 8 bits per pixel and 16 bits are also supported.
img.setColorDepth(BITS_PER_PIXEL); // Set colour depth first
img.createSprite(70, 80); // then create the sprite
// Fill Sprite with the colour that will be defined later as "transparent"
// We could also fill with any colour as transparent, and later specify that
// same colour when we push the Sprite onto the display screen.
img.fillSprite(transparent);
// Draw 2 triangles to create a filled in star
img.fillTriangle(35, 0, 0, 59, 69, 59, star_color);
img.fillTriangle(35, 79, 0, 20, 69, 20, star_color);
// Punch a star shaped hole in the middle with a smaller "transparent" star
img.fillTriangle(35, 7, 6, 56, 63, 56, transparent);
img.fillTriangle(35, 73, 6, 24, 63, 24, transparent);
// Set the 2 pixel colours that 1 and 0 represent on the display screen
img.setBitmapColor(star_color, transparent);
// Push sprite to TFT screen CGRAM at coordinate x,y (top left corner)
// Specify what colour is to be treated as transparent (black in this example)
img.pushSprite(x, y, transparent);
// Delete Sprite to free memory, creating and deleting takes very little time.
img.deleteSprite();
}
// =========================================================================