#include <LiquidCrystal_I2C.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <Keypad.h>
#define motor 2
#define botao 18
#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 nivel2;
LiquidCrystal_I2C lcd4(I2C_ADDR4, LCD_COLUMNS4, LCD_LINES4);
const byte rows = 4;
const byte cols = 4;
char keys [rows][cols] =
{{ '1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}};
byte rowpin[rows] = { 52,50,48,46};
byte colpin[cols] = {44,42,40,38};
Keypad keypad = Keypad( makeKeymap(keys), rowpin, colpin, rows, cols);
float lerdistancia1CM() {
digitalWrite(TRIG_PIN1, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN1, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN1, LOW);
int duration = pulseIn(ECHO_PIN1, HIGH);
return duration * 0.034 / 2;
}
void Lerdistancia2CM(void) {
digitalWrite(TRIG_PIN2, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN2, HIGH);
delayMicroseconds(10);
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);
}
}
float lerdistancia3CM() {
digitalWrite(TRIG_PIN3, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN3, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN3, LOW);
int duration = pulseIn(ECHO_PIN3, HIGH);
return duration * 0.034 / 2;
}
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(motor, OUTPUT);
sensor.begin ();
lcd4.init();
lcd4.backlight();
lcd4.begin(16, 2);
lcd4.print("Enter Number:");
delay(3000);
lcd4.clear();
}
void loop() {
Lerdistancia2CM();
sensor.requestTemperatures();
float nivel1 = lerdistancia1CM();
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);
}
float nivel3 = lerdistancia3CM();
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);
}
if(digitalRead(botao) == 0 )
{
digitalWrite(motor, HIGH);
delay(10000);
digitalWrite(motor, LOW);
}
char key = keypad.getKey();
if (key != NO_KEY){
lcd.setCursor(0, 0);
lcd4.print(key);
Serial.println(key);
}
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("TANQUE 1:");
lcd.setCursor(11, 0);
lcd.print(lerdistancia1CM());
lcd.setCursor(0, 1);
lcd.print("TANQUE 2:");
lcd.setCursor(11, 1);
lcd.print(nivel2);
lcd.setCursor(0, 2);
lcd.print("TANQUE 3:");
lcd.setCursor(11, 2);
lcd.print(lerdistancia3CM());
lcd.setCursor(0, 3);
lcd.print(F("Temp:"));
lcd.setCursor(11, 3);
lcd.print(sensor.getTempCByIndex(0));
delay(1000);
/*
https://wokwi.com/projects/347175788714394195
https://wokwi.com/projects/357382046680658945
https://docs.wokwi.com/pt-BR/parts/wokwi-lcd1602
*/
}
Loading
ds18b20
ds18b20