//#include "GravityTDS.h"
#include <EEPROM.h>
#include <max6675.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//define pin variables
#define TdsSensorPin A1;
int ktcSO = 8;
int ktcCS = 9;
int ktcCLK = 10;
int RD_pin = 3; //relay drain
int RS_pin = 4; //relay water source
int MD_pin = 5; //manual drain pin
int MS_pin = 6; //manual water source
int auto_man = 7; //Auto or Manual flag
int sound_pin = 8; //buzzer pin
int set_tds = 9;
int tds_up = 10;
int tds_down = 11;
int trig_pin = 12;
int echo_pin = 13;
int tds_led = 2;
int wlvl_led = A0;
//water level global variables;
long duration;
int distance;
//temp and TDS global variables
float xTemperature = 25;
float tdsValue = 500;
//pre define function
MAX6675 ktc(ktcCLK,ktcCS,ktcSO);
LiquidCrystal_I2C lcd(0x27, 20, 4);
float get_tds_value();
float get_water_level();
void set_display(int line, int column, String message,String post);
void clear_disp_line(int myLine);
void setup(){
//set pinmodes
//input pins
pinMode(trig_pin, OUTPUT); // Sets the trigPin as an Output
pinMode(RD_pin, OUTPUT);
pinMode(tds_led, OUTPUT);
pinMode(wlvl_led,OUTPUT);
pinMode(RS_pin, OUTPUT);
pinMode(sound_pin, OUTPUT);
//input pins
pinMode(echo_pin, INPUT); // Sets the echoPin as an Input
pinMode(set_tds,INPUT);
pinMode(tds_up,INPUT);
pinMode(tds_down,INPUT);
pinMode(auto_man, INPUT);
pinMode(MS_pin, INPUT);
pinMode(MD_pin, INPUT);
Serial.begin(9600);
lcd.init(); // initialize the lcd
lcd.backlight(); // Turn on the LCD screen backlight
/**TDS settings
gravityTds.setPin(TdsSensorPin);
gravityTds.setAref(5.0); //reference voltage on ADC, default 5.0V on Arduino UNO
gravityTds.setAdcRange(1024); //1024 for 10bit ADC;4096 for 12bit ADC
gravityTds.begin(); //initialization
**/
}
void loop(){
if (auto_man){
}
delay(500);
}
float get_tds_value(){
/**
gravityTds.setTemperature(xTemperature); // set the temperature and execute temperature compensation
gravityTds.update(); //sample and calculate
tdsValue = gravityTds.getTdsValue(); // then get the value
Serial.println("TDS:",tdsValue);
return(tdsValue);
**/
return (400.0);
}
float get_temp_value(){
/**
xTemperature = ktc.readCelsius();
return (xTemperature);
**/
return(35.0);
}
float get_water_level(){
digitalWrite(trig_pin, LOW);
delayMicroseconds(2);
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
duration = pulseIn(echo_pin, HIGH);
distance = duration * 0.034 / 2; //distance in cm
return(distance);
}
void set_display(int line, int column, String message,String post){
clear_disp_line(line);
lcd.setCursor(line, column);
lcd.print(message);
if (post=="celcius"){
lcd.print(" ");
lcd.print((char)223);
lcd.print("C");
} else if (post=="ppm"){
lcd.print(" PPM");
} else {
//do nothing
}
}
void clear_disp_line(int myLine){
for (int i = 0; i <= 20; i++){
lcd.setCursor(myLine,i);
lcd.write(254);
}
}