#include <SPI.h> // original code
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#define TFT_CS 10
#define TFT_RST 9
#define TFT_DC 8
const int analogPin = A0;
int total_points[320];
int k = 13;
int plotpoint = 0;
int xaxis = 1;
int set = 0;
float time_delay = 10;
float yaxis_set = 5;
float yaxis_level = 0;
int wave_type = 1;
int wave_set = 0;
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
void setup() {
Serial.begin(9600);
tft.begin();
tft.setRotation(3);
tft.fillScreen(ILI9341_BLACK);
tft.fillRect(10, 230, 310, 2, ILI9341_WHITE);
tft.setRotation(4);
tft.fillRect(10, 12, 220, 2, ILI9341_WHITE);
tft.setRotation(3);
for (int i = 0; i <= 5; i++) {
tft.fillRect(1, 10 + 44*i, 11, 2, ILI9341_WHITE);
tft.setCursor(0, 2 + 44*i);
tft.println(String(5-i) + "v");
}
for (int i = 0; i <= 297; i++) {
total_points[i] = 0;
}
}
void loop() {
plotpoint = map(analogRead(A0), 0, 1023, 229, 10);
xaxis = map(analogRead(A1), 0, 1023, 1, 10);
yaxis_level = map(analogRead(A2), 0, 1023, 229, 9);
//Serial.print(wave_type);
if (xaxis != set) {
//Serial.print("xaxis triggered");
tft.setTextColor(ILI9341_BLACK);
tft.setCursor(300, 220);
tft.print(String(set) + "s");
tft.setTextColor(ILI9341_WHITE);
tft.setCursor(300, 220);
tft.print(String(xaxis) + "s");
} // Made by Oscar Eld
set = xaxis;
time_delay = ((set * 1000) / 306);
if (yaxis_level != yaxis_set) {
//Serial.print("yaxis triggered");
tft.setCursor(20, 220);
tft.setTextColor(ILI9341_BLACK);
tft.print(String(map(yaxis_set, 10, 229, 200, 0)/40.) + "v");
for (int i = 0; i <= 306; i+=2) {
tft.fillRect(14+i, yaxis_level, 1, 1, ILI9341_YELLOW);
}
for (int i = 0; i <= 306; i+=2) {
tft.fillRect(14+i, yaxis_set, 1, 1, ILI9341_BLACK);
}
tft.setCursor(20, 220);
tft.setTextColor(ILI9341_YELLOW);
tft.print(String(map(yaxis_level, 10, 229, 200, 0)/40.) + "v");
}
yaxis_set = yaxis_level;
total_points[k] = plotpoint;
if (total_points[k+1] > 0) {
tft.fillRect(k+1, total_points[k+1], 1, 1, ILI9341_BLACK);
}
tft.fillRect(k, plotpoint, 1, 1, ILI9341_WHITE);
k = k + 1;
if (k >= 321) {
k = 13;
}
tft.fillRect(1, 10 + 44*5, 11, 2, ILI9341_WHITE); // bandage patch to 0v tick. was damaged if voltage ended below 2.6v
delay(time_delay);
}