#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI(); // Initialize TFT display
#define NUM_SLIDERS 6
#define RADIUS 30
#define CENTER_X 88 // Center X for display of 176 width
#define CENTER_Y 110 // Center Y for display of 220 height
struct RadialSlider {
int x, y; // Center position
int value; // Slider value (0 to 100)
};
RadialSlider sliders[NUM_SLIDERS];
void drawSlider(RadialSlider &slider) {
int angle = map(slider.value, 0, 100, 0, 360);
float radian = angle * DEG_TO_RAD;
int x_end = slider.x + RADIUS * cos(radian);
int y_end = slider.y - RADIUS * sin(radian);
tft.fillCircle(slider.x, slider.y, RADIUS, TFT_DARKGREY); // Draw slider circle
tft.drawLine(slider.x, slider.y, x_end, y_end, TFT_RED); // Draw indicator line
}
void setupSliders() {
for (int i = 0; i < NUM_SLIDERS; ++i) {
sliders[i].x = (i % 3) * (RADIUS * 2 + 10) + RADIUS + 10;
sliders[i].y = (i / 3) * (RADIUS * 2 + 10) + RADIUS + 10;
sliders[i].value = 50; // Default to middle value
}
}
void setup() {
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);
setupSliders();
for (int i = 0; i < NUM_SLIDERS; ++i) {
drawSlider(sliders[i]);
}
}
void loop() {
// You can update the sliders here based on user input
}