#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#define TFT_CS 10
#define TFT_DC 9
#define SCREEN_HEIGHT 240
#define SCREEN_WIDTH 320
#define SCREEN_REFRESH_RATE 100
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
#define arrSize(X) sizeof(X) / sizeof(X[0])
int course = 310;
int target = 27;
int circleRadius = 50;
void drawBearing(int angle, uint16_t colour) {
tft.drawLine(
tft.width() / 2,
tft.height() / 2,
tft.width() / 2 + circleRadius * sin(angle * M_PI / 180.),
tft.height() / 2 - circleRadius * cos(angle * M_PI / 180.),
colour);
}
void erasePreviousBearingLines() {
drawBearing(course, ILI9341_BLUE);
drawBearing(target, ILI9341_BLUE);
}
void printNewBearingLines() {
drawBearing(course, ILI9341_GREEN);
drawBearing(target, ILI9341_RED);
}
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK);
tft.fillCircle(tft.width() / 2, tft.height() / 2, circleRadius, ILI9341_BLUE);
}
void loop() {
static uint32_t timeCapture;
if ((millis() - timeCapture) > SCREEN_REFRESH_RATE) {
timeCapture = millis();
erasePreviousBearingLines();
course = random(360);
target = random(360);
printNewBearingLines();
}
}