Ciao a tutti, vorrei disegnare tramite un tft un orologio analogico con lancetta dei sec. min. e h.
Ho gia un piccolo problema che non riesco a risolvere, in quanto collegandomi alla funzione millis() riesco a far disegnare con cadenza di 1sec l'avanzamento della lancetta dei secondi, ma non riesco a capire come cancellare la lancetta precedentemente disegnata, in quanto sul display vedo disegnate la bellezza di 60 linee. Spero di essere stato chiaro, vi posto il codice.
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_TFTLCD.h> // Hardware-specific library
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
unsigned long dts;
unsigned long t = 1000;
float xs, ys, a = 0.00;
void setup() {
Serial.begin(9600);
tft.begin(0x9341);
tft.setRotation(0);
tft.fillScreen(0x0000);
tft.drawCircle(120, 160, 100, 0xFFE0);
delay(1000);
tft.drawCircle(120, 160, 85, 0x001F);
}
void loop() {
dts = millis() - t;
if (dts >= 1000) {
t = millis();
Serial.println(t);
Serial.println(a);
if (a >= 0.00) {
if (a <= 6.28) {
xs = 120 + (85 * cos(a));
ys = 160 + (85 * sin(a));
tft.drawLine(120, 160, xs, ys, 0x07E0);
a = a + 0.10472;
}
}
if (a >= 6.28) {
a = 0.00;
}
}
}
Grazie per gli aiuti