Как предотвратить аналоговые часы не оставить тропы на ЖК -дисплеев TFT с ESP32C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как предотвратить аналоговые часы не оставить тропы на ЖК -дисплеев TFT с ESP32

Сообщение Anonymous »

Я строю аналоговые часы на комплекте Wrover ESP32 с TFT LCD с использованием библиотеки TFT_ESPI. Часы отображают правильное время с использованием NTP, но у меня есть проблема с руками: < /p>
Когда руки перемещаются, старая позиция остается видимой (тропы). < /P>
Если я очищаю весь экран и перекрасил фон и текст каждый обновление, это работает, но вызывает мерцание, и мой статический текст разочаровывается. Стереть руки с помощью твердого цвета. < /p>
Вот упрощенная версия моего кода, которая воспроизводит проблему: < /p>
#include
#include
#include

TFT_eSPI tft = TFT_eSPI();

#define CENTER_X 50
#define CENTER_Y 60
#define RADIUS 50
#define HOUR_LENGTH 10
#define MINUTE_LENGTH 20

const char* ssid = "Dina";
const char* password = "Dd78134003Segco";

const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 12600; // ایران +3:30
const int daylightOffset_sec = 0;

int lastMinute = -1;

// draw clock hand as triangle
void drawHandTriangle(int length, float angleRad, uint16_t color, int width) {
float cosA = cos(angleRad);
float sinA = sin(angleRad);

int xTip = CENTER_X + cosA * length;
int yTip = CENTER_Y + sinA * length;

int xLeft = CENTER_X + cos(angleRad + 1.57) * width;
int yLeft = CENTER_Y + sin(angleRad + 1.57) * width;

int xRight = CENTER_X + cos(angleRad - 1.57) * width;
int yRight = CENTER_Y + sin(angleRad - 1.57) * width;

tft.fillTriangle(xTip, yTip, xLeft, yLeft, xRight, yRight, color);
}

void drawClockFace() {
tft.fillScreen(TFT_BLACK);

for (int h = 0; h < 12; h++) {
float angle = (h * 30 - 90) * 0.0174533;
int x0 = CENTER_X + cos(angle) * (RADIUS - 3);
int y0 = CENTER_Y + sin(angle) * (RADIUS - 3);
int x1 = CENTER_X + cos(angle) * RADIUS;
int y1 = CENTER_Y + sin(angle) * RADIUS;
tft.drawLine(x0, y0, x1, y1, TFT_WHITE);
}

for (int h = 1; h
Вопрос:
Как я могу обновить только руки сверху статического фонового изображения и текста, не оставляя тропинок и не вызывая мерцание? < /p>

Подробнее здесь: https://stackoverflow.com/questions/797 ... with-esp32
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»