#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
int flow=1;
int tanklevel=0;
int negtanklevel=0;
int Oldtanklevel=0;
int barcolor=0xFFFF;
int play=1;
void setup() {
//-----------------------------------BLUE RIDGE HEADER WITH BORDER
tft.begin();
tft.setRotation(1);
tft.setCursor(77, 3);
tft.setTextColor(0x24FF);
tft.setTextSize(1);
tft.println("Blue Ridge Energy Services");
tft.drawRoundRect(0,0,318,13,3,0x24FF);
//-------------------------------------------DRAW TANK BOX
tft.drawRoundRect(15,20,31,200,5,ILI9341_WHITE);
//--------------------------------------------100 PERCENT
tft.setCursor(47, 19);
tft.setTextColor(ILI9341_WHITE);
tft.println("-100%");
//---------------------------------------------75 PERCENT
tft.setCursor(47, 67);
tft.setTextColor(ILI9341_WHITE);
tft.println("-75%");
//---------------------------------------------50 PERCENT
tft.setCursor(47, 117);
tft.setTextColor(ILI9341_WHITE);
tft.println("-50%");
//---------------------------------------------25 PERCENT
tft.setCursor(47, 167);
tft.setTextColor(ILI9341_WHITE);
tft.println("-25%");
//----------------------------------------------0 PERCENT
tft.setCursor(47, 214);
tft.setTextColor(ILI9341_WHITE);
tft.println("-0%");
tft.setCursor(5, 228);
tft.setTextColor(ILI9341_YELLOW);
tft.setTextSize(1);
tft.println("Tank Level= ");
tft.setCursor (175, 228);
tft.setTextColor(ILI9341_YELLOW);
tft.println("Flow Rate= ");
//------------------------------------------DRAW FLOW RATE ICON
tft.drawCircle(205,150,21,ILI9341_WHITE);
tft.drawCircle(205,150,9,ILI9341_WHITE);
tft.drawRect(210,129,30,5,ILI9341_WHITE);
tft.drawLine(210,141,239,141,ILI9341_WHITE); //------------CLOSED PUMP GRAPHIC
//tft.drawLine(225,141,239,141,ILI9341_WHITE); //---------OPEN PUMP GRAPHIC
tft.drawRoundRect(239,127,5,18,3,ILI9341_WHITE);
tft.fillRect(210,130,30,11,ILI9341_BLACK);
}
void loop() {
//------------------------------------------------CLEAR OLD PROGRESS IF VALUE HAS CHANGED
if(Oldtanklevel!=tanklevel){
tft.fillRect(74,226,35,20,ILI9341_BLACK);
}
tanklevel=analogRead(A0);
negtanklevel=(1023-tanklevel);
tft.fillRect(18,217,25,map(tanklevel,0,1023,0,-196),barcolor); //-----TANK LEVEL PROGRESS BAR
delay(20);
tft.fillRect(18,21,25,map(negtanklevel,0,1023,0,196),ILI9341_BLACK); //----REFRESH PIXELS FOR PROGRESS BAR
//--------------------------------------------------BAR COLOR TOGGLE
if(tanklevel>769){
barcolor=(ILI9341_GREEN);
}
if(tanklevel>504 && tanklevel<769){
barcolor=(ILI9341_YELLOW);
}
if(tanklevel>240 && tanklevel<504 ){
barcolor=(ILI9341_ORANGE);
}
if(tanklevel<240){
barcolor=(ILI9341_RED);
}
//---------------------------------------------------CLEAR OLD PROGRESS IF VALUE HAS CHANGED
if(Oldtanklevel!=tanklevel){
tft.fillRect(74,226,35,20,ILI9341_BLACK);
}
//---------------------------------------------------- DISPLAY NUMERIC TANK LEVEL IN FT
tft.setCursor (75, 228);
tft.setTextColor(ILI9341_YELLOW);
tft.println(tanklevel);
Oldtanklevel=analogRead(A0);
//-----------------------------------------------------FLOW ANIMATION
if(flow >0){
//--------------------------------------------------------STEP 1
if(play<2){
tft.drawLine(198,146,212,154,ILI9341_BLACK);
tft.drawLine(209,143,201,157,ILI9341_BLACK);
tft.drawLine(203,142,207,158,ILI9341_BLACK);
tft.drawLine(197,152,213,148,ILI9341_BLACK);
tft.drawLine(197,150,213,150,0xFF5A);
tft.drawLine(205,142,205,158,0xFF5A);
tft.drawLine(199,144,211,156,0xFF5A);
tft.drawLine(199,156,211,144,0xFF5A);
}
//--------------------------------------------------------STEP 2
if(play>1 && play<3){
tft.drawLine(197,150,213,150,ILI9341_BLACK);
tft.drawLine(205,142,205,158,ILI9341_BLACK);
tft.drawLine(199,144,211,156,ILI9341_BLACK);
tft.drawLine(199,156,211,144,ILI9341_BLACK);
tft.drawLine(197,148,213,152,0xFF5A);
tft.drawLine(207,142,203,158,0xFF5A);
tft.drawLine(201,143,209,157,0xFF5A);
tft.drawLine(198,154,212,146,0xFF5A);
}
//--------------------------------------------------------STEP 3
if (play>2 && play<4){
tft.drawLine(197,148,213,152,ILI9341_BLACK);
tft.drawLine(207,142,203,158,ILI9341_BLACK);
tft.drawLine(201,143,209,157,ILI9341_BLACK);
tft.drawLine(198,154,212,146,ILI9341_BLACK);
tft.drawLine(198,146,212,154,0xFF5A);
tft.drawLine(209,143,201,157,0xFF5A);
tft.drawLine(203,142,207,158,0xFF5A);
tft.drawLine(197,152,213,148,0xFF5A);
play=0;
}
}else{
tft.drawLine(197,150,213,150,0xFF5A);
tft.drawLine(205,142,205,158,0xFF5A);
tft.drawLine(199,144,211,156,0xFF5A);
tft.drawLine(199,156,211,144,0xFF5A);
}
play=play+1;
} // ----------------------------------------------------END LOOP