#include <Servo.h>
#include <LiquidCrystal_I2C.h>
int buzzer = 5;
int tombol = 4;
//Variavel do lcd
//LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
#define LDR_PIN 3
LiquidCrystal_I2C lcd(0x27, 20, 4);
//Variavel Sensor de temperatura
const float BETA = 3950;
//Valvula
const int valvulaPin = 6;
Servo valvula;
int posicao = 10;
//Variavel sensor de movimento
int sensorMovimento = 2;
int val = 0;
//Variavel Sensor de luminosidade
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
// inicia com uma mensagem no lcd
lcd.begin(16, 2);
pinMode(8, OUTPUT); //define uma saida
pinMode(9, OUTPUT);
lcd.print("Iniciando Sistema!");
for(int i = 1; i <= 10; i++) { //laço de repetição
digitalWrite(8, HIGH); //Acende Led
delay(500); // Delay de 1 segundo
digitalWrite(8, LOW); //Apaga Led
delay(500);
}
digitalWrite(9, HIGH); //Acende Led
lcd.clear();
lcd.print("Bem Vindo!");
Serial.begin(9600);
//Iniciando PinMode Sensor Movimento
pinMode(sensorMovimento, INPUT);
//Motor servo
valvula.attach(6);
//sensor luminosidade
pinMode(LDR_PIN, INPUT);
lcd.init();
lcd.backlight();
}
void loop() {
//sensor luminosidade
lcd.setCursor(2, 0);
lcd.print("Sala: ");
if (digitalRead(LDR_PIN) == LOW) {
lcd.clear();
lcd.print("Claro!");
digitalWrite(9, LOW); //apaga Led
} else {
lcd.clear();
lcd.print("Escuro...");
digitalWrite(9, HIGH); //acende Led
}
//Sensor de temperatura
int analogValue = analogRead(A0);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.setCursor(0, 1);
lcd.print("Temperatura: ");
lcd.print(celsius);
lcd.print(" C");
//Serial.print("Temperatura: ");
//Serial.print(celsius);
//Serial.println(" ℃");
if (celsius >= 22) {
digitalWrite(11, HIGH);
} else {
digitalWrite(11, LOW);
}
//sensor movimento
val = digitalRead(sensorMovimento); // read input value
if (val == HIGH) {
Serial.println("Movimento Detectado!");
digitalWrite(10, HIGH); //acende Led
delay(5000); //espera com a luz acesa
digitalWrite(10, LOW); //apaga Led
} else {
Serial.println("...");
}
//move a valvula
//if(posicao == 10){
// valvula.write(90);
// posicao = 90;
//}else{
// valvula.write(10);
// posicao = 10;
//}
delay(1000);
// buzzer e botao:
pinMode(buzzer, OUTPUT);
pinMode(tombol, INPUT_PULLUP);
if(digitalRead(tombol) == LOW){
noTone(buzzer);
delay(1000);
tone(buzzer, 1000);
delay(1000);
}
else{
noTone(buzzer);
delay(1000);
}
}