/*
Forum: https://forum.arduino.cc/t/adafruit-320x240-mit-teensy-4-0-flickering/1350338
Wokwi: https://wokwi.com/projects/422046098566960129
ec2021
Draw Bars/Pointers with minimum erasure effort
2025/02/03 17:00 o'clock CET:
Changes in GraphicClass.h, added (- length)
*/
#include "GraphicClass.h"
constexpr float Radius = 100.0;
unsigned long lastTime = 0;
int Angle = 180;
int AngleDx = 10;
int value = 1;
int delta = 1;
PointerClass pointerA, pointerB, pointerC, pointerD;
BarClass barA, barB, barC, barD;
void setup() {
Serial.begin(115200);
Serial.println("Graphics Example");
tft.begin();
pointerA.setXYR(120, 160, 80);
pointerB.setXYR(120, 160, 60);
pointerC.setXYR(120, 160, 50);
pointerD.setXYR(120, 160, 40);
barA.setXYWD(200, 20, 40, 0);
barB.setXYWD( 40, 260, 30, 1);
barC.setXYWD( 20, 120, 20, 2);
barD.setXYWD(160, 300, 10, 3);
clearScreen();
}
void loop(void) {
if (millis() - lastTime > 100) {
lastTime = millis();
handlePointers();
handleBars();
}
}
void clearScreen() {
tft.fillScreen(ILI9341_BLACK);
}
void handlePointers() {
pointerA.draw(Angle, ILI9341_YELLOW);
pointerB.draw(90 - Angle, ILI9341_GREEN);
pointerC.draw(Angle + 45, ILI9341_YELLOW);
pointerD.draw(180 - Angle, ILI9341_GREEN);
Angle += AngleDx;
if ((Angle < 0) || (Angle > 180)) {
AngleDx = -AngleDx;
}
}
void handleBars() {
barA.draw(value * 10, ILI9341_MAGENTA);
barB.draw(value * 10, ILI9341_RED);
barC.draw(value * 10, ILI9341_BLUE);
barD.draw(value * 10, ILI9341_GREEN);
value += delta;
if (value > 10 || value < 2) {
delta = -delta;
}
}