#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
int b1 = 10; //E1
int b2 = 11; //E2
int b3 = 12; //E3
int manopla = 13; //E4
int emg = 14; //E5
int sensor_superior = 15; //E6 - e19
int sensor_inferior = 16; //E7
int sensor_rotulo = 17; //E8
int sensor_garrafa =8; //E9
int sobe_massageador = 2; //S1
int cabecote = 3; //S2
int desce_massageador = 4; //S6
int massageador = 5; //S4
int datador = 6; //S5
int resistencia = 7; //S3
LiquidCrystal_I2C lcd(0x27, 20, 4);
int com_datador= 0;
int tempoAcionamento = 0;
int menu = 0;
int menuAnterior = 0;
int botao_apertado = 0;
int numero_rotulos = 2;
int atraso_rotulo = 160;
int tempo_fica_segurando = 0;
int tempo_massagem = 0;
int producao = 0;
int long timeOutSobe = 1200;
int long timeOutDesce = 1200;
bool timerTimeOutSobe;
bool timerTimeOutDesce;
void le_botao();
void rotula();
void emergencia();
bool referenciada = 0;
bool atualizaTela;
int numeroTela = 0;
// ====================== ESTADOS ======================
enum MachineState {SETUP, AUTOMATICO, EMERGENCIA, NAO_REFERENCIADA, ROTULANDO};
MachineState currentState = SETUP;
void tela(){
if (menu == 0){
menuAnterior = 0;
if (botao_apertado == 2){
numeroTela = numeroTela +1;
atualizaTela = true;
}if (numeroTela == 4){numeroTela = 1;}
if (botao_apertado == 3){
numeroTela = numeroTela -1;
atualizaTela = true;
}if (numeroTela == 0){numeroTela = 3;}
if (atualizaTela){
lcd.clear();
atualizaTela = false;
if (numeroTela == 1){
lcd.setCursor(4, 0);
lcd.print("TELA 1 - UM");
}
if (numeroTela == 2){
lcd.setCursor(4, 0);
lcd.print("TELA 2 - DOIS");
}
if (numeroTela == 3){
lcd.setCursor(4, 0);
lcd.print("TELA 3 - TRES");
}
}
if (botao_apertado == 1){
menu = 1;
atualizaTela = true;
}
}
}
void subTela(){
if (menu == 1){
if (atualizaTela){
lcd.clear();
if (numeroTela == 1){
lcd.setCursor(4, 0);
lcd.print("AJUSTE VALOR 1");
lcd.setCursor(2, 2);
lcd.print(numero_rotulos);
}
if (numeroTela == 2){
lcd.setCursor(4, 0);
lcd.print("AJUSTE VALOR 2");
lcd.setCursor(2, 2);
lcd.print(tempo_massagem);
}
if (numeroTela == 3){
lcd.setCursor(4, 0);
lcd.print("AJUSTE VALOR 3");
lcd.setCursor(2, 2);
lcd.print(atraso_rotulo);
}
}
if (menuAnterior == 0){
menuAnterior = 1;
botao_apertado = 0;
}
atualizaTela = 0;
if (botao_apertado == 1){
menu = 0;
atualizaTela = true;
}
}
}
void le_botao() {
botao_apertado = 0;
if (digitalRead(b1) == HIGH) {
delay(10);
while (digitalRead(b1) == HIGH) {}
delay(10);
botao_apertado = 1;
}
if (digitalRead(b2) == HIGH) {
delay(10);
while (digitalRead(b2) == HIGH) {}
delay(10);
botao_apertado = 2;
}
if (digitalRead(b3) == HIGH) {
delay(10);
while (digitalRead(b3) == HIGH) {}
delay(10);
botao_apertado = 3;
}
}
void configura(){
if (menu == 1){
if (numeroTela == 1){
if (botao_apertado == 2){
numero_rotulos ++;
}
if (botao_apertado == 3){
numero_rotulos --;
}
lcd.setCursor(2, 2);
lcd.print(numero_rotulos);
lcd.print(" ");
}
if (numeroTela == 2){
lcd.setCursor(2, 2);
lcd.print(atraso_rotulo);lcd.print(" ");
}
if (numeroTela == 3){
lcd.setCursor(2, 2);
lcd.print(tempo_massagem);lcd.print(" ");
}
}
}
void setup() {
numero_rotulos= 2;
atraso_rotulo = 100;
tempo_massagem = 1000;
producao = 1;
lcd.init();
lcd.backlight();
lcd.clear();
digitalWrite(sobe_massageador, LOW);
digitalWrite(desce_massageador, LOW);
digitalWrite(massageador, LOW);
digitalWrite(cabecote, LOW);
pinMode(sensor_superior, INPUT);
pinMode(sensor_inferior, INPUT);
pinMode(sensor_rotulo, INPUT);
pinMode(sensor_garrafa, INPUT);
pinMode(manopla, INPUT);
pinMode(emg, INPUT);
pinMode(b1, INPUT);
pinMode(b1, INPUT);
pinMode(b2, INPUT);
pinMode(sobe_massageador, OUTPUT);
pinMode(desce_massageador, OUTPUT);
pinMode(massageador, OUTPUT);
pinMode(datador, OUTPUT);
pinMode(cabecote, OUTPUT);
digitalWrite(cabecote, LOW);
// digitalWrite(massageador,HIGH);
// pinMode(alim_motores, OUTPUT);
lcd.setCursor(4, 0);
lcd.print("TB MAQUINAS");
}
void loop() {
le_botao();
tela();
subTela();
configura();
}
AUTO
EMG
s SUP
s INF
s ROT
s GARRAFA
s ROT
SOBE
MASS
CAB
DESCE
MASS
MASS
DAT
RES