Add libraries, picocalc notes.
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
An example digital clock using a TFT LCD screen to show the time.
|
||||
Demonstrates use of the font printing routines. (Time updates but date does not.)
|
||||
|
||||
It uses the time of compile/upload to set the time
|
||||
For a more accurate clock, it would be better to use the RTClib library.
|
||||
But this is just a demo...
|
||||
|
||||
Make sure all the display driver and pin connections are correct by
|
||||
editing the User_Setup.h file in the TFT_eSPI library folder.
|
||||
|
||||
#########################################################################
|
||||
###### DON'T FORGET TO UPDATE THE User_Setup.h FILE IN THE LIBRARY ######
|
||||
#########################################################################
|
||||
|
||||
Based on clock sketch by Gilchrist 6/2/2014 1.0
|
||||
|
||||
A few colour codes:
|
||||
|
||||
code color
|
||||
0x0000 Black
|
||||
0xFFFF White
|
||||
0xBDF7 Light Gray
|
||||
0x7BEF Dark Gray
|
||||
0xF800 Red
|
||||
0xFFE0 Yellow
|
||||
0xFBE0 Orange
|
||||
0x79E0 Brown
|
||||
0x7E0 Green
|
||||
0x7FF Cyan
|
||||
0x1F Blue
|
||||
0xF81F Pink
|
||||
|
||||
*/
|
||||
|
||||
#include <TFT_eSPI.h> // Hardware-specific library
|
||||
#include <SPI.h>
|
||||
|
||||
#define TFT_GREY 0x5AEB
|
||||
|
||||
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
|
||||
|
||||
uint32_t targetTime = 0; // for next 1 second timeout
|
||||
|
||||
static uint8_t conv2d(const char* p); // Forward declaration needed for IDE 1.6.x
|
||||
|
||||
uint8_t hh = conv2d(__TIME__), mm = conv2d(__TIME__ + 3), ss = conv2d(__TIME__ + 6); // Get H, M, S from compile time
|
||||
|
||||
byte omm = 99, oss = 99;
|
||||
byte xcolon = 0, xsecs = 0;
|
||||
unsigned int colour = 0;
|
||||
|
||||
void setup(void) {
|
||||
//Serial.begin(115200);
|
||||
tft.init();
|
||||
tft.setRotation(1);
|
||||
tft.fillScreen(TFT_BLACK);
|
||||
|
||||
tft.setTextSize(1);
|
||||
tft.setTextColor(TFT_YELLOW, TFT_BLACK);
|
||||
|
||||
targetTime = millis() + 1000;
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (targetTime < millis()) {
|
||||
// Set next update for 1 second later
|
||||
targetTime = millis() + 1000;
|
||||
|
||||
// Adjust the time values by adding 1 second
|
||||
ss++; // Advance second
|
||||
if (ss == 60) { // Check for roll-over
|
||||
ss = 0; // Reset seconds to zero
|
||||
omm = mm; // Save last minute time for display update
|
||||
mm++; // Advance minute
|
||||
if (mm > 59) { // Check for roll-over
|
||||
mm = 0;
|
||||
hh++; // Advance hour
|
||||
if (hh > 23) { // Check for 24hr roll-over (could roll-over on 13)
|
||||
hh = 0; // 0 for 24 hour clock, set to 1 for 12 hour clock
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Update digital time
|
||||
int xpos = 0;
|
||||
int ypos = 85; // Top left corner ot clock text, about half way down
|
||||
int ysecs = ypos + 24;
|
||||
|
||||
if (omm != mm) { // Redraw hours and minutes time every minute
|
||||
omm = mm;
|
||||
// Draw hours and minutes
|
||||
if (hh < 10) xpos += tft.drawChar('0', xpos, ypos, 8); // Add hours leading zero for 24 hr clock
|
||||
xpos += tft.drawNumber(hh, xpos, ypos, 8); // Draw hours
|
||||
xcolon = xpos; // Save colon coord for later to flash on/off later
|
||||
xpos += tft.drawChar(':', xpos, ypos - 8, 8);
|
||||
if (mm < 10) xpos += tft.drawChar('0', xpos, ypos, 8); // Add minutes leading zero
|
||||
xpos += tft.drawNumber(mm, xpos, ypos, 8); // Draw minutes
|
||||
xsecs = xpos; // Sae seconds 'x' position for later display updates
|
||||
}
|
||||
if (oss != ss) { // Redraw seconds time every second
|
||||
oss = ss;
|
||||
xpos = xsecs;
|
||||
|
||||
if (ss % 2) { // Flash the colons on/off
|
||||
tft.setTextColor(0x39C4, TFT_BLACK); // Set colour to grey to dim colon
|
||||
tft.drawChar(':', xcolon, ypos - 8, 8); // Hour:minute colon
|
||||
xpos += tft.drawChar(':', xsecs, ysecs, 6); // Seconds colon
|
||||
tft.setTextColor(TFT_YELLOW, TFT_BLACK); // Set colour back to yellow
|
||||
}
|
||||
else {
|
||||
tft.drawChar(':', xcolon, ypos - 8, 8); // Hour:minute colon
|
||||
xpos += tft.drawChar(':', xsecs, ysecs, 6); // Seconds colon
|
||||
}
|
||||
|
||||
//Draw seconds
|
||||
if (ss < 10) xpos += tft.drawChar('0', xpos, ysecs, 6); // Add leading zero
|
||||
tft.drawNumber(ss, xpos, ysecs, 6); // Draw seconds
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Function to extract numbers from compile time string
|
||||
static uint8_t conv2d(const char* p) {
|
||||
uint8_t v = 0;
|
||||
if ('0' <= *p && *p <= '9')
|
||||
v = *p - '0';
|
||||
return 10 * v + *++p - '0';
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user