#include <LiquidCrystal_I2C.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <Keypad.h>
#define bomba 26
#define misturador 2
#define botao 18
#define limpar 19
#define TRIG_PIN2 13
#define ECHO_PIN2 12
#define ledverde2 9
#define ledama2 10
#define ledverm2 11
#define TRIG_PIN1 15
#define ECHO_PIN1 14
#define ledverde1 3
#define ledama1 4
#define ledverm1 5
#define TRIG_PIN3 17
#define ECHO_PIN3 16
#define ledverde3 6
#define ledama3 7
#define ledverm3 8
LiquidCrystal_I2C lcd(0X27, 20, 4);
OneWire oneWire(24);
DallasTemperature sensor(&oneWire);
#define I2C_ADDR4 0x29
#define LCD_COLUMNS4 16
#define LCD_LINES4 2
float nivel1;
float nivel2;
float nivel3;
int teste;
String txt_vaz1 = " ";
unsigned int vaz1 = 0;
uint8_t cont=0;
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t rowPins[ROWS] = { 52, 50, 48, 46 };
uint8_t colPins[COLS] = { 44, 42, 40, 38 };
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd4(I2C_ADDR4, LCD_COLUMNS4, LCD_LINES4);
void Lerdistancia1CM(void)
{
digitalWrite(TRIG_PIN1, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN1, HIGH);
delayMicroseconds(2);
digitalWrite(TRIG_PIN1, LOW);
int duration = pulseIn(ECHO_PIN1, HIGH);
nivel1 = duration * 0.034 / 2;
if(nivel1 >= 300){
digitalWrite(ledverde1, HIGH);
digitalWrite(ledama1, LOW);
digitalWrite(ledverm1, LOW);
} else if(nivel1 >= 50 && nivel1 <= 300){
digitalWrite(ledverde1, LOW);
digitalWrite(ledama1, HIGH);
digitalWrite(ledverm1, LOW);
} else {
digitalWrite(ledverde1, LOW);
digitalWrite(ledama1, LOW);
digitalWrite(ledverm1, HIGH);
}
}
void Lerdistancia2CM(void)
{
digitalWrite(TRIG_PIN2, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN2, HIGH);
delayMicroseconds(2);
digitalWrite(TRIG_PIN2, LOW);
int duration = pulseIn(ECHO_PIN2, HIGH);
nivel2 = duration * 0.034 / 2;
if(nivel2 >= 300){
digitalWrite(ledverde2, HIGH);
digitalWrite(ledama2, LOW);
digitalWrite(ledverm2, LOW);
} else if(nivel2 >= 50 && nivel2 <= 300){
digitalWrite(ledverde2, LOW);
digitalWrite(ledama2, HIGH);
digitalWrite(ledverm2, LOW);
} else {
digitalWrite(ledverde2, LOW);
digitalWrite(ledama2, LOW);
digitalWrite(ledverm2, HIGH);
}
}
void Lerdistancia3CM(void)
{
digitalWrite(TRIG_PIN3, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN3, HIGH);
delayMicroseconds(2);
digitalWrite(TRIG_PIN3, LOW);
int duration = pulseIn(ECHO_PIN3, HIGH);
nivel3 = duration * 0.034 / 2;
if(nivel3 >= 300){
digitalWrite(ledverde3, HIGH);
digitalWrite(ledama3, LOW);
digitalWrite(ledverm3, LOW);
} else if(nivel3 >= 50 && nivel3 <= 300){
digitalWrite(ledverde3, LOW);
digitalWrite(ledama3, HIGH);
digitalWrite(ledverm3, LOW);
} else {
digitalWrite(ledverde3, LOW);
digitalWrite(ledama3, LOW);
digitalWrite(ledverm3, HIGH);
}
}
void Teclado(void)
{
char key = keypad.getKey();
if (key != NO_KEY)
{
Serial.print(key);
if(key == '#')
{
cont = 0;
lcd4.setCursor(0, 1);
while(cont<3)
{
key = keypad.getKey();
if (key != NO_KEY)
{
txt_vaz1[cont] = key;
cont++;
lcd4.print(key);
}
}
}
}
Serial.println();
vaz1 = txt_vaz1.toInt();
Serial.println(vaz1);
}
void Misturador(void)
{
if(digitalRead(botao) == 0 )
{
digitalWrite (misturador, HIGH);
delay(10000);
digitalWrite ( misturador, LOW);
}
}
void Bomba(void)
{
if(nivel3<vaz1) digitalWrite (bomba, HIGH);
else digitalWrite (bomba, LOW);
}
/*void Limpar(void)
/*{
if(digitalRead(limpar) == 0 )
{
lcd4.clear();
unsigned int vaz1 = 0;
uint8_t cont=0;
lcd4.print("Enter Number:");
lcd4.setCursor(0, 1);
lcd4.print(vaz1);
}
} */
void Limpar2(void)
{
if(digitalRead(limpar) == 0 )
{
lcd4.setCursor(0, 1);
lcd4.print(" ");
//txt_vaz1[cont] = 0;
vaz1 = txt_vaz1.toInt();
txt_vaz1[cont] = 0;
teste = txt_vaz1[cont];
lcd4.clear();
lcd4.print("Enter Number:");
lcd4.print(teste);
}
}
void setup()
{
Serial.begin(115200);
pinMode(TRIG_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
pinMode(ledverde2, OUTPUT);
pinMode(ledama2, OUTPUT);
pinMode(ledverm2, OUTPUT);
pinMode(TRIG_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(ledverde1, OUTPUT);
pinMode(ledama1, OUTPUT);
pinMode(ledverm1, OUTPUT);
pinMode(TRIG_PIN3, OUTPUT);
pinMode(ECHO_PIN3, INPUT);
pinMode(ledverde3, OUTPUT);
pinMode(ledama3, OUTPUT);
pinMode(ledverm3, OUTPUT);
pinMode(botao, INPUT_PULLUP);
pinMode(misturador, OUTPUT);
pinMode(bomba, OUTPUT);
pinMode(limpar, INPUT_PULLUP);
lcd4.backlight();
lcd4.begin(16, 2);
lcd4.print("Enter Number:");
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("TANQUE 1:");
lcd.setCursor(0, 1);
lcd.print("TANQUE 2:");
lcd.setCursor(0, 2);
lcd.print("TANQUE 3:");
lcd.setCursor(0, 3);
lcd.print(F("Temp:"));
}
void loop()
{
sensor.requestTemperatures();
Lerdistancia1CM();
Lerdistancia2CM();
Lerdistancia3CM();
Teclado();
Misturador();
Bomba();
//Limpar();
//Limpar2();
lcd.setCursor(11, 0);
lcd.print(nivel1);
lcd.setCursor(11, 1);
lcd.print(nivel2);
lcd.setCursor(11, 2);
lcd.print(nivel3);
lcd.setCursor(11, 3);
lcd.print(sensor.getTempCByIndex(0));
}