#include <LiquidCrystal_I2C.h>
//### DEFINIÇÃO DOS PINOS ###//
// ENTRADAS //
const int BOT_LIGA = 15; //Botão Verde
const int BOT_DESL = 2; //Botão Vermelho
const int BOT_HOR = 27; //Botão Azul
const int BOT_AHOR = 26; //Botão Amarelo
// SAÍDAS //
const int LED_VD = 5; //Motor Desligado
const int LED_VM = 18; //Motor Ligado
const int LED_AM = 19; //Falha
const int LED_AZ = 23; //Saída que liga o Motor
// DISPLAY //
#define green 13
#define red 12
#define blue 14
int tempo = 100;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
pinMode(BOT_LIGA, INPUT);
pinMode(BOT_DESL, INPUT);
pinMode(BOT_HOR, INPUT);
pinMode(BOT_AHOR, INPUT);
pinMode(LED_VD, OUTPUT);
pinMode(LED_VM, OUTPUT);
pinMode(LED_AM, OUTPUT);
pinMode(LED_AZ, OUTPUT);
pinMode(green, OUTPUT);
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
lcd.begin(16,2);
lcd.init();
lcd.backlight();
}
int modo=0;
//Modo 0 -> Motor Desligado
//Modo 1 -> Motor Ligado
//Modo 2 -> sentido horario
//Modo 3 -> sentido anti-horario
//Modo 4 -> Espera Nova Mudança
void loop()
{
if(digitalRead(BOT_LIGA)==HIGH)
{
modo = 1;
}
if(digitalRead(BOT_DESL)==HIGH)
{
modo = 0;
}
if(digitalRead(BOT_HOR)==HIGH)
{
modo = 2;
}
if(digitalRead(BOT_AHOR)==HIGH)
{
modo = 3;
}
if(modo==0)
{
digitalWrite(green, LOW);
digitalWrite(LED_VD, LOW);
digitalWrite(LED_VM, LOW);
digitalWrite(LED_AM, LOW);
digitalWrite(LED_AZ, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("MOTOR DESLIGADO");
lcd.setCursor(1,1);
lcd.print("OFF");
modo = 3;
delay(500);
}
else if(modo==1)
{
digitalWrite(green, HIGH);
delay(tempo);
digitalWrite(green, LOW);
delay(tempo);
digitalWrite(LED_VD, LOW);
digitalWrite(LED_VM, HIGH);
digitalWrite(LED_AM, LOW);
digitalWrite(LED_AZ, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("MOTOR LIGADO");
modo = 3;
delay(500);
}
else if(modo==2)
{
digitalWrite(LED_VD, HIGH);
digitalWrite(LED_VM, LOW);
digitalWrite(LED_AM, HIGH);
digitalWrite(LED_AZ, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("FALHA R.TERMICO");
delay(300);
digitalWrite(LED_AM, LOW);
lcd.clear();
delay(300);
modo = 0;
}
}