#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define TFT_DC 9
#define TFT_CS 10
#define TFT_HORIZONTAL 1
#define MAX_PROGRESS_WIDTH 313
#define DISPLAY_WIDTH 320
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
int audioReading = 0;
int radioReading = 0;
void setup() {
tft.begin();
tft.setRotation(TFT_HORIZONTAL);
drawUI();
readSensors();
fillProgressBars(audioReading, radioReading);
}
void loop() {
readSensors();
fillProgressBars(audioReading, radioReading);
delay(1000);
}
void drawUI() {
tft.setCursor(0, 0);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("Audio Frequency (AF):");
tft.drawRect(0, 30, DISPLAY_WIDTH, 15, ILI9341_WHITE);
tft.setCursor(0, 65);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("Radio Frequency (RF):");
tft.drawRect(0, 95, DISPLAY_WIDTH, 15, ILI9341_WHITE);
tft.setCursor(0, 125);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("Total EMF:");
tft.drawRect(0, 155, DISPLAY_WIDTH, 15, ILI9341_WHITE);
}
void clearProgressBars() {
tft.fillRect(2, 32, MAX_PROGRESS_WIDTH, 10, ILI9341_BLACK);
tft.fillRect(2, 97, MAX_PROGRESS_WIDTH, 10, ILI9341_BLACK);
tft.fillRect(2, 157, MAX_PROGRESS_WIDTH, 10, ILI9341_BLACK);
}
void fillProgressBars(int af, int rf) {
int totalEMF = af + rf;
int totalColor = 0;
clearProgressBars();
if (totalEMF >= 0 && totalEMF <= 66) {
totalColor = ILI9341_GREEN;
}
else if (totalEMF >= 67 && totalEMF <= 133) {
totalColor = ILI9341_YELLOW;
}
else {
totalColor = ILI9341_RED;
}
tft.fillRect(2, 32, map(af, 0, 100, 0, MAX_PROGRESS_WIDTH), 10, ILI9341_WHITE);
tft.fillRect(2, 97, map(af, 0, 100, 0, MAX_PROGRESS_WIDTH), 10, ILI9341_WHITE);
tft.fillRect(2, 157, map(totalEMF, 0, 200, 0, MAX_PROGRESS_WIDTH), 10, totalColor);
if (totalEMF > 133) {
showWarning(ILI9341_RED);
}
else {
showWarning(ILI9341_BLACK);
}
}
void showWarning(int color) {
tft.setCursor(0, 185);
tft.setTextColor(color);
tft.setTextSize(4);
tft.println("Danger");
}
void readSensors() {
audioReading = map(random(0, 1023), 0, 1023, 0, 100);
radioReading = map(random(0, 1023), 0, 1023, 0, 100);
}