#include <TFT_eSPI.h>
#include <SPI.h>
TFT_eSPI tft = TFT_eSPI();
#define SPEED_MIN 1
#define SPEED_MAX 300
int Speed = SPEED_MIN;
int fuel, pos, bestlap, currentlap, timelap, bankiridepan, bankiribelakang, bankanandepan, bankananbelakang, balancekiri, balancekanan, lap, gear;
#define POT_PIN 34
void setup(void) {
tft.init();
tft.setRotation(1);
Serial.begin(57600);
tft.fillScreen(TFT_BLACK);
tft.setCursor(0, 0);
tft.setTextSize(5);
tft.setTextColor(TFT_WHITE);
tft.println("BT-DASH:");
delay(1000);
}
void displayValue(int x, int y, int value) {
tft.setCursor(x, y);
tft.setTextSize(3);
tft.setTextColor(TFT_WHITE);
tft.println(value);
}
void loop() {
tft.fillScreen(TFT_BLACK);
/*int borderRadius = 10;
tft.drawRect(0, 0, 320, 240, borderRadius, TFT_WHITE); */
tft.drawRect(0, 0, 320, 240, TFT_WHITE);
tft.drawRect(1, 31, 106, 48, TFT_WHITE);
tft.drawRect(107, 31, 106, 48, TFT_WHITE);
tft.drawRect(213, 31, 106, 48, TFT_WHITE);
tft.drawRect(0, 79, 75, 49, TFT_WHITE);
tft.drawRect(75, 79, 45, 49, TFT_WHITE);
tft.drawRect(246, 79, 75, 49, TFT_WHITE);
tft.drawRect(201, 79, 45, 49, TFT_WHITE);
tft.drawRect(120, 79, 81, 99, TFT_WHITE);
tft.drawRect(0, 127, 75, 50, TFT_WHITE);
tft.drawRect(75, 127, 45, 50, TFT_WHITE);
tft.drawRect(246, 127, 75, 50, TFT_WHITE);
tft.drawRect(201, 127, 45, 50, TFT_WHITE);
tft.drawRect(0, 177, 93, 37, TFT_WHITE);
tft.drawRect(93, 177, 134, 37, TFT_WHITE);
tft.drawRect(227, 177, 93, 37, TFT_WHITE);
const char *labels[] = {"SPEED", "LAP", "GEAR", "FUEL", "POS"};
int labelX[] = {3, 3, 123, 248, 248};
int labelY[] = {81, 130, 82, 82, 130};
for (int i = 0; i < 5; i++) {
tft.setCursor(labelX[i], labelY[i]);
tft.setTextSize(0);
tft.setTextColor(TFT_WHITE);
tft.println(labels[i]);
}
tft.setCursor(98, 184);
tft.setTextSize(3);
tft.setTextColor(TFT_WHITE);
tft.println("BALANCE");
int valueX[] = {6, 114, 221, 12, 83, 207, 258, 83, 207, 31, 258, 12, 258, 136};
int valueY[] = {44, 44, 44, 91, 91, 91, 91, 140, 140, 184, 184, 140, 140, 88};
int valueVariables[] = {bestlap, currentlap, timelap, Speed, bankiridepan, bankanandepan, fuel, bankiribelakang, bankananbelakang, balancekiri, balancekanan, lap, pos, gear};
for (int i = 0; i < 14; i++) {
displayValue(valueX[i], valueY[i], valueVariables[i]);
}
int potValue = analogRead(POT_PIN);
Speed = map(potValue, 0, 4095, SPEED_MIN, SPEED_MAX);
fuel = map(potValue, 0, 1020, SPEED_MIN, SPEED_MAX);
pos = map(potValue, 0, 10000, SPEED_MIN, SPEED_MAX);
bestlap = map(potValue, 0, 500, SPEED_MIN, SPEED_MAX);
currentlap = map(potValue, 0, 600, SPEED_MIN, SPEED_MAX);
timelap = map(potValue, 0, 400, SPEED_MIN, SPEED_MAX);
bankiridepan = map(potValue, 0, 7000, SPEED_MIN, SPEED_MAX);
bankiribelakang = map(potValue, 0, 7200, SPEED_MIN, SPEED_MAX);
bankanandepan = map(potValue, 0, 7100, SPEED_MIN, SPEED_MAX);
bankananbelakang = map(potValue, 0, 7400, SPEED_MIN, SPEED_MAX);
balancekiri = map(potValue, 0, 8000, SPEED_MIN, SPEED_MAX);
balancekanan = map(potValue, 0, 6900, SPEED_MIN, SPEED_MAX);
lap = map(potValue, 0, 20000, SPEED_MIN, SPEED_MAX);
gear = map(potValue, 0, 20000, SPEED_MIN, SPEED_MAX);
int progressWidth = map(Speed, SPEED_MIN, SPEED_MAX, 0, 320);
int progressHeight = 10;
tft.fillRect(0, 0, progressWidth, 31 , TFT_YELLOW);
tft.fillRect(0, 214, progressWidth, 26 , TFT_YELLOW);
delay(0);
}