/*
Forum: https://forum.arduino.cc/t/adafruit-320x240-mit-teensy-4-0-flickering/1350338
Wokwi: https://wokwi.com/projects/422041526088791041
ec2021
Draw Bars/Pointers with minimum erasure effort
*/
#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;
BarClass barA, barB, barC;
void setup() {
Serial.begin(115200);
Serial.println("Graphics Example");
tft.begin();
pointerA.setXYR(120, 160, 80);
pointerB.setXYR(120, 160, 40);
barA.setXYW( 40, 20, 10);
barB.setXYW( 80, 20, 15);
barC.setXYW(120, 20, 20);
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(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);
value += delta;
if (value > 10 || value < 2) {
delta = -delta;
}
}