#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD1(0x27, 16, 2);
LiquidCrystal_I2C LCD2(0x27, 16, 2);
int botao1 = 19;
int botao2 = 23;
int led1G = 14;
int led1R = 12;
int led2G = 27;
int led2R = 26;
bool alto = LOW;
bool baixo = LOW;
int subindo = 0;
int descendo = 0;
bool BS1 = 0, BS2 = 0, S1 = 0, S2 = 0;
void setup() {
LCD1.init();
LCD1.backlight();
LCD2.init();
LCD2.backlight();
pinMode(led1G, OUTPUT);
pinMode(led1R, OUTPUT);
pinMode(led2G, OUTPUT);
pinMode(led2R, OUTPUT);
pinMode(botao1, INPUT);
pinMode(botao2, INPUT);
// Mensagem a ser dividida
String mensagem = "EXEMPLO DE MENSAGEM";
// Dividindo a mensagem
String parte1 = mensagem.substring(0, 16); // 16 caracteres para o LCD1
String parte2 = mensagem.substring(16); // Resto da mensagem para o LCD2
// Exibindo as partes nos LCDs
LCD1.setCursor(0, 0);
LCD1.print(parte1);
LCD2.setCursor(0, 0);
LCD2.print(parte2);
}
void loop()
{
alto = digitalRead(botao1);
baixo = digitalRead(botao2);
BS1 = digitalRead(botao1);
BS2 = digitalRead(botao2);
if(BS1 == 1 && S1 == 0)
{
S1 = 1;
}
if(BS2 == 1 && S2 == 0)
{
S2 = 1;
}
if(BS1 == 0 && S1 == 1){
S1 = 0;
}
if(BS2 == 0 && S2 == 1){
S2 = 0;
}
if (subindo <= 0 && descendo <= 0) {
LCD1.setCursor(0, 0);
//LCD1.print("LIVRE1");
LCD2.setCursor(0, 0);
//LCD2.print("LIVRE2");
digitalWrite(led1G, HIGH);
digitalWrite(led1R, LOW);
digitalWrite(led2G, HIGH);
digitalWrite(led2R, LOW);
}
// Alguém está descendo
if (alto == HIGH && subindo == 0) {
Serial.print("descendo: ");
Serial.println(descendo);
descendo++;
digitalWrite(led2G, LOW);
digitalWrite(led2R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1R, LOW);
while (digitalRead(botao1) == HIGH) delay(5);
}
if (baixo == HIGH && descendo > 0) {
descendo--;
while (digitalRead(botao2) == HIGH) delay(5);
}
// Alguém está subindo
if (baixo == HIGH && descendo == 0) {
Serial.print("subindo: ");
Serial.println(subindo);
subindo++;
digitalWrite(led1G, HIGH);
digitalWrite(led1R, LOW);
digitalWrite(led2G, HIGH);
digitalWrite(led2R, LOW);
while (digitalRead(botao2) == HIGH) delay(5);
}
if (alto == HIGH && subindo > 0) {
subindo--;
while (digitalRead(botao1) == HIGH) delay(5);
}
}