#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int freio = 12;
const int baixo = 13;
const int cima = 11;
const int porta = 5;
const int andar1 = 1;
const int andar2 = 2;
const int andar3 = 3;
const int andar4 = 4;
const int chamar1 = 50;
const int chamar2 = 51;
const int chamar3 = 52;
const int chamar4 = 53;
int andaratual;
int chamado = 1;
void setup() {
pinMode(freio, OUTPUT);
pinMode(baixo, OUTPUT);
pinMode(cima, OUTPUT);
pinMode(porta, INPUT_PULLUP);
pinMode(andar1, INPUT_PULLUP);
pinMode(andar2, INPUT_PULLUP);
pinMode(andar3, INPUT_PULLUP);
pinMode(andar4, INPUT_PULLUP);
pinMode(chamar1, INPUT_PULLUP);
pinMode(chamar2, INPUT_PULLUP);
pinMode(chamar3, INPUT_PULLUP);
pinMode(chamar4, INPUT_PULLUP);
lcd.init();
lcd.backlight();
Serial.begin(9600);
}
void loop() {
if (digitalRead(andar1) == LOW) {
andaratual = 1;
} else if (digitalRead(andar2) == LOW) {
andaratual = 2;
} else if (digitalRead(andar3) == LOW) {
andaratual = 3;
} else if (digitalRead(andar4) == LOW) {
andaratual = 4;
}
lcd.setCursor(0, 0);
lcd.print(" Andar Atual: ");
lcd.print(andaratual);
Serial.print("Andar Atual: ");
Serial.println(andaratual);
if (digitalRead(chamar1) == LOW) {
chamado = 1;
} else if (digitalRead(chamar2) == LOW) {
chamado = 2;
} else if (digitalRead(chamar3) == LOW) {
chamado = 3;
} else if (digitalRead(chamar4) == LOW) {
chamado = 4;
}
lcd.setCursor(0, 1);
lcd.print("Andar Chamado:");
lcd.print(chamado);
Serial.print("Andar Chamado: ");
Serial.println(chamado);
Serial.print("Porta: ");
Serial.println(digitalRead(porta));
if (digitalRead(porta) == LOW) {
digitalWrite(cima, LOW);
digitalWrite(baixo, LOW);
digitalWrite(freio, HIGH);
lcd.setCursor(0, 1);
lcd.print("Porta Aberta:");
}else if (chamado > andaratual) {
delay(2000);
digitalWrite(cima, HIGH);
digitalWrite(baixo, LOW);
digitalWrite(freio, LOW);
} else if (chamado < andaratual) {
delay(2000);
digitalWrite(cima, LOW);
digitalWrite(baixo, HIGH);
digitalWrite(freio, LOW);
} else if (chamado == andaratual) {
delay(1000);
digitalWrite(cima, LOW);
digitalWrite(baixo, LOW);
digitalWrite(freio, HIGH);
}
delay(1000);
}