Automação Residencial

Automatização do Processo de Brassagem

Eletrogate 21 de junho de 2022

Introdução

Este projeto foi desenvolvido para ser implementado junto à panela de brassagem. Essa ideia tem, como base, a automação de processos longos e repetitivos, que são essenciais, por exemplo, na produção de cerveja.

Avisos importantes:

  • O consumo de bebidas alcoólicas por menores de 18 anos é proibido no Brasil. Por isso, este projeto deve ser implementado, exclusivamente, por pessoas com maior idade legal.
  • RISCO DE QUEIMA: Alguns dos procedimentos abordados neste post envolvem líquidos e objetos em altas temperaturas. Tome muito cuidado e tenha muita atenção ao acompanha-los.
  • A Eletrogate não se responsabiliza por danos, de qualquer categoria, ocorridos durante ou em decorrência da implementação deste projeto.

Sistema

O sistema consiste em uma panela de brassagem que será monitorada e controlada por um Uno. Este trocará informações com um celular por meio do módulo HC-05. A temperatura da panela será aferida por um sensor submersível e aumentada por uma resistência de alta potencia. No Arduino, estarão gravadas algumas receitas, dentre as quais poder-se-á escolher em um app, do qual o desenvolvimento é abordado no post. Além da temperatura, a placa gerenciará, também, os tempos envolvidos nos processos.


Código no App Inventor

Para realizar o controle do sistema, foi desenvolvido, no site MIT App Inventor, um aplicativo para Android. Caso seja seu primeiro contado com a plataforma de desenvolvimento, recomendamos que acesse os tutoriais da própria MIT App Inventor e o post “Controlando um led com movimentos do celular“, em nosso blog, que aborda o tema. Logo abaixo, temos a imagem que mostra a tela principal do aplicativo. Nela, encontramos alguns textos introdutórios e dois botões, chamados de “Procedimento 1” e “Procedimento 2”, que quando pressionados encaminham o usuário para uma nova página. Lá, ele realizará o controle do sistema e da receita escolhida.

Já na imagem abaixo, temos o código que permite essa troca de páginas. O “botão 1” representa o procedimento 1, que, quando selecionado, abre uma outra tela, chamada receita 1. O “botão 2” representa o procedimento 2, que, quando selecionado, abre a “receita 2”.

Em seguida, podemos ver a tela para a qual o cliente é direcionado após clicar em um dos botões. Nela, temos o nome da receita, posicionado no topo da tela, e o botão que, quando pressionado, envia uma letra “A”, via bluetooth, para o Uno, que a recebe em sua porta serial. Após a inicialização do processo, temos, no aplicativo, dois botões: “sim” e “não”. Eles servem para responder as questões que aparecerão no LCD. Abaixo, temos o botão do bluetooth. Quando pressionado, ele abre uma lista dos dispositivos bluetooth ao redor do smartphone. Nela, basta que você escolha o endereço código referente ao HC-05.

O código em blocos abaixo mostra a configuração do bluetooth. Quando pressionada, a “EscolheLista1”, representada pela imagem do símbolo do bluetooth, irá abrir uma lista de opções de aparelhos bluetooth na região.

O código abaixo trata da receita 1. Nele, podemos fazer uma breve analise. Quando o botão “iniciar” é acionado, ele envia um string para o Arduino.

Código da página da receita 2.


Diagrama

Para melhor compreensão, iremos fazer uma breve descrição das conexões que temos no diagrama acima. No Arduino, temos o “pino 13” configurado como entrada, que está ligado ao sensor de temperatura. Já o “pino 7” está como saída, que é conectado ao LED e ao módulo rele. O modulo bluetooth tem seus pinos GND e VCC conectados ao barramento da protoboard. Já os pinos TX e RX estão conectados ao Arduino. A conexão RX passa pelo divisor de tensão e, depois, entra no módulo. Por fim, temos o LCD, que é energizado pelo barramento e tem seus pinos SCL e SDA ligados aos pinos A5 e A4, respectivamente, do Arduino.


Código Fonte

Os procedimentos e parâmetros implementados neste código estão presentes no livro de receitas, disponível gratuitamente, no site sinnatrah.

#include <Wire.h> //INCLUSÃO DE BIBLIOTECA
#include <LiquidCrystal_I2C.h> //INCLUSÃO DE BIBLIOTECA

LiquidCrystal_I2C lcd(0x27,16,2);

#include <SoftwareSerial.h>//INCLUSÃO DE BIBLIOTECA
#include <OneWire.h>  //INCLUSÃO DE BIBLIOTECA
#include <DallasTemperature.h>//INCLUSÃO DE BIBLIOTECA

const int pinoRX = 2; //PINO DIGITAL 2 (RX)
const int pinoTX = 3; //PINO DIGITAL 3 (TX)
SoftwareSerial bluetooth(pinoRX, pinoTX); //PINOS QUE EMULAM A SERIAL, ONDE
//O PINO 2 É O RX E O PINO 3 É O TX
char dadoBluetooth = 0; // variavel que amarzena dados do bluetooth
#define led 7 // definindo o pino 7 como led 
#define dados 13// definindo o pino 13 como dados
OneWire oneWire(dados);  /* Protocolo OneWire */
/********************************************************************/
DallasTemperature sensors(&oneWire); /* encaminha referências OneWire para o sensor */
/********************************************************************/ 
/*****variveis*******/
int conta;
int escolha = 0;
int sensor = 0;

int sim = 0;
int nao = 0;

int ssim;
int nnao;

unsigned long time;
int realtemp;
int minu;
int seg;
/*************/
void setup() {
  Serial.begin(9600);// iniciando a serial 
  bluetooth.begin(9600);// inicia biblioteca 
  lcd.init();//inicia biblioteca 
  sensors.begin(); // inicia biblioteca 
  lcd.backlight();//inicia biblioteca 

  pinMode(led,OUTPUT);// definindo pino led como saida 
  lcd.setCursor(2,1);// iniciando curso na posição 
  lcd.print("escolha sua"); //escreve no LCD
  lcd.setCursor(0,2);// iniciando curso na posição 
  lcd.print("receita pelo app");//escreve no LCD
  delay(5000);
  lcd.clear(); //limpa o LCD
}
void loop(){
 
if(bluetooth.available()){ //SE O BLUETOOTH ESTIVER HABILITADO, FAZ
       dadoBluetooth = bluetooth.read(); //VARIÁVEL RECEBE O VALOR ENVIADO PELO BLUETOOTH
/*********************/  
  if(dadoBluetooth == 'A'){// se oque for recebido for igual a A 
   conta = 1; 
  }
  /*******/
  if(dadoBluetooth == 'B'){
   conta = 2; 
  }
   /*******************/
   if(dadoBluetooth == 'S'){
   sim = 1;
   nao = 0; 
  }
  if(dadoBluetooth == 'N'){
   nao = 1;
   sim = 0; 
  }
    switch(conta){
case 1:
      receita1();
      //Executa a função um
      break;
/*case 2:
      receita2();//Executa a função um
      break;*/
  }
 }
}
void leituraT(){
sensors.requestTemperatures(); /* Envia o comando para leitura da temperatura */
Serial.print(sensors.getTempCByIndex(0));
}
void receita1(){// subrotida da receita 1
  if(escolha == 0){
    lcd.setCursor(3,0);
    lcd.print("Receita 1");
    lcd.setCursor(2,1);
    lcd.print("Selecionada");
    delay(3000);


    lcd.setCursor(1,0);
    lcd.print("AMERICAN BROWN");
    lcd.setCursor(1,1);
    lcd.print("      ALE        ");
    delay(3000);


    lcd.setCursor(0,0);
    lcd.print(" Adicione Agua ");
    lcd.setCursor(4,1);
    lcd.print("tratada");
    delay(5000);

    lcd.clear();
       /******/
    escolha = 1;
  }
/************decisão 1 *******/
  if(escolha == 1){
    lcd.setCursor(0,0);
    lcd.print("Agua adicionada?");
    lcd.setCursor(0,1);
    lcd.print("sim"           );
    lcd.setCursor(13,1);
    lcd.print("nao");
  }
    if(sim == 1 && escolha == 1){
      ssim = 2;    
    }
      if(ssim == 2){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Iniciando etapa");
      lcd.setCursor(3,1);
      lcd.print("De Mostura  ");
      delay(3000);
       escolha = 20;
      lcd.clear();
        
  }
      if(nao == 1 && escolha == 1){
      nnao = 1;      
    }
      if(nnao == 1){
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("Realize A Pre   ");
      lcd.setCursor(0,1);
      lcd.print("Etapa Essenciai"); 
      delay(3000);
      lcd.clear();
         /*****/
      nnao = 0;
      nao = 0; 
      escolha = 1;
  }
/************decisão 2*******/
  if(escolha == 20){
    ssim = 0;
    sim = 0;
    lcd.setCursor(1,0);
    lcd.print("Adicione todos  ");
    lcd.setCursor(5,1);
    lcd.print("maltes");
    delay(3000);
    lcd.clear();
    escolha = 2;
    
}
 if(escolha == 2){
    lcd.setCursor(0,0);
    lcd.print("Maltes inseridos?");
    lcd.setCursor(0,1);
    lcd.print("sim      ");
    lcd.setCursor(13,1);
    lcd.print("nao");
  }
    if(sim == 1 && escolha == 2){
      ssim = 2;    
    }
      if(ssim == 2){
      lcd.clear();
        
      lcd.setCursor(0,0);
      lcd.print("Inicio das etapas");
      lcd.setCursor(1,1);
      lcd.print("   De Mistura");
      delay(3000);
       escolha = 3;
      lcd.clear();
       
  }
      if(nao == 1 && escolha == 1){
      nnao = 1;      
    }
      if(nnao == 1){
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("Realize A Pre   ");
      lcd.setCursor(0,1);
      lcd.print("Etapa Essenciai"); 
      delay(3000);
      lcd.clear();
         /*****/
      nnao = 0;
      nao = 0; 
      escolha = 2;
  }
/********inicio das etapas de mostura********/
while(escolha == 3){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
  leituraT();
     if(sensors.getTempCByIndex(0) >= 52){
       
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 15){    //AJUSTE DE TEMPO 
     escolha = 4; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("Primeira Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
relogio();
      minu = 0;
     delay(3000);
     lcd.clear();
     }
}
/****************************/
while(escolha == 4){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
leituraT();
     if(sensors.getTempCByIndex(0) >= 67){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 60){    //AJUSTE DE TEMPO 
     escolha = 5; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("Segunda Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
relogio();
      minu = 0;
     delay(3000);
     lcd.clear();
     }
}
/**********************************/
while(escolha == 5){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
leituraT();
     if(sensors.getTempCByIndex(0) >= 76){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 10){    //AJUSTE DE TEMPO 
     escolha = 6; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("Terceira Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
relogio();
      minu = 0;
     delay(3000);
     lcd.clear();
     }
   }
  
/************fim das 3 atepas de mustura*******/
if(escolha == 6){
    lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Iniciando Etapa  ");
      lcd.setCursor(0,1);
      lcd.print(" De Fervura  ");
      
      delay(3000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Inicio da Etapa");
      lcd.setCursor(4,1);
      lcd.print("UM");
      delay(3000);
       escolha = 7;
      lcd.clear();
}
/********inicio das etapas de fervura********/
while(escolha == 7){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
  leituraT();
     if(sensors.getTempCByIndex(0) >= 76){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 30){    //AJUSTE DE TEMPO 
     escolha = 21; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("Primeira Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
      relogio();
      minu = 0;
     delay(3000);
     lcd.clear();
     }
}
/****************************/
if(escolha == 21){
    lcd.setCursor(0,0);
      lcd.print("Insira o Simcoe");
    lcd.setCursor(6,1);
    lcd.print("6g"         );
    delay(3000);
     lcd.clear();
   escolha = 8;
}
if(escolha == 8){
    lcd.setCursor(0,0);
    lcd.print("Simcoe inserido?");
    lcd.setCursor(0,1);
    lcd.print("sim"           );
    lcd.setCursor(13,1);
    lcd.print("nao");
  }
    if(sim == 1 && escolha == 8){
      ssim = 2;    
    }
      if(ssim == 2){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Inicio da Etapa");
      lcd.setCursor(4,1);
      lcd.print("Dois");
      delay(3000);
       escolha = 9;
      lcd.clear();
        /*****/
  }
      if(nao == 1 && escolha == 8){
      nnao = 1;      
    }
      if(nnao == 1){
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("Realize A Pre   ");
      lcd.setCursor(0,1);
      lcd.print("Etapa Essenciai"); 
      delay(3000);
      lcd.clear();
         /*****/
      nnao = 0;
      nao = 0; 
      escolha = 8;
  }
/*******************************/
while(escolha == 9){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
  leituraT();
     if(sensors.getTempCByIndex(0) >= 76){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 40){    //AJUSTE DE TEMPO 
     escolha = 22; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("segunda Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
      relogio();
       minu = 0;
     delay(3000);
     lcd.clear();
     }
}
/****************************/
if(escolha == 22){
  ssim = 0;
   sim = 0;
    lcd.setCursor(0,0);
    lcd.print("Insira o Simcoe");
    lcd.setCursor(6,1);
    lcd.print("20g"         );
    delay(3000);
     lcd.clear();
   escolha = 10;
}
if(escolha == 10){
    lcd.setCursor(0,0);
    lcd.print("Simcoe inserido?");
    lcd.setCursor(0,1);
    lcd.print("sim"           );
    lcd.setCursor(13,1);
    lcd.print("nao");
  }
    if(sim == 1 && escolha == 10){
      ssim = 2;    
    }
      if(ssim == 2){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Inicio da Etapa");
      lcd.setCursor(4,1);
      lcd.print("três");
      delay(3000);
       escolha = 11;
      lcd.clear();
        /*****/
  }
      if(nao == 1 && escolha == 1){
      nnao = 1;      
    }
      if(nnao == 1){
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("Realize A Pre   ");
      lcd.setCursor(0,1);
      lcd.print("Etapa Essenciai"); 
      delay(3000);
      lcd.clear();
         /*****/
      nnao = 0;
      nao = 0; 
      escolha = 8;
  }
/*******************************/
while(escolha == 11){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
  leituraT();
     if(sensors.getTempCByIndex(0) >= 76){
      relogio();
      lcd.setCursor(13,1);
      //lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 20){    //AJUSTE DE TEMPO 
     escolha = 12; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("terceira Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
      relogio();
       minu = 0;
     delay(3000);
     lcd.clear();
     }
 }
    
    
    if(escolha == 12){
    lcd.setCursor(0,0);
    lcd.print("Escolhar sua");
    lcd.setCursor(0,1);
    lcd.print("Proxima receita");
    delay(2000);
    lcd.setCursor(1,0);
    lcd.print("Voltando para");
    lcd.setCursor(5,1);
    lcd.print("O menu");
    delay(2000);
      conta = 0;
      escolha = 0;
      lcd.clear();
  }
}

void receita2(){// subrotida da receita 1
  if(escolha == 0){
    lcd.setCursor(3,0);
    lcd.print("Receita 2");
    lcd.setCursor(2,1);
    lcd.print("Selecionada");
    delay(3000);


    lcd.setCursor(1,0);
    lcd.print("TRAPPIST STYLE");
    lcd.setCursor(1,1);
    lcd.print("   SINGLE     ");
    delay(3000);


    lcd.setCursor(0,0);
    lcd.print(" Adicione Agua ");
    lcd.setCursor(4,1);
    lcd.print("tratada");
    delay(5000);

    lcd.clear();
       /******/
    escolha = 1;
  }
/************decisão 1 *******/
  if(escolha == 1){
    lcd.setCursor(0,0);
    lcd.print("Agua adicionada?");
    lcd.setCursor(0,1);
    lcd.print("sim"           );
    lcd.setCursor(13,1);
    lcd.print("nao");
  }
    if(sim == 1 && escolha == 1){
      ssim = 2;    
    }
      if(ssim == 2){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Iniciando etapa");
      lcd.setCursor(3,1);
      lcd.print("De Mostura  ");
      delay(3000);
       escolha = 20;
      lcd.clear();
        
  }
      if(nao == 1 && escolha == 1){
      nnao = 1;      
    }
      if(nnao == 1){
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("Realize A Pre   ");
      lcd.setCursor(0,1);
      lcd.print("Etapa Essenciai"); 
      delay(3000);
      lcd.clear();
         /*****/
      nnao = 0;
      nao = 0; 
      escolha = 1;
  }
/************decisão 2*******/
  if(escolha == 20){
    ssim = 0;
    sim = 0;
    lcd.setCursor(1,0);
    lcd.print("Adicione todos  ");
    lcd.setCursor(5,1);
    lcd.print("maltes");
    delay(3000);
    lcd.clear();
    escolha = 2;
    
}
 if(escolha == 2){
    lcd.setCursor(0,0);
    lcd.print("Maltes inseridos?");
    lcd.setCursor(0,1);
    lcd.print("sim      ");
    lcd.setCursor(13,1);
    lcd.print("nao");
  }
    if(sim == 1 && escolha == 2){
      ssim = 2;    
    }
      if(ssim == 2){
      lcd.clear();
        
      lcd.setCursor(0,0);
      lcd.print("Inicio das etapas");
      lcd.setCursor(1,1);
      lcd.print("   De Mistura");
      delay(3000);
       escolha = 3;
      lcd.clear();
       
  }
      if(nao == 1 && escolha == 1){
      nnao = 1;      
    }
      if(nnao == 1){
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("Realize A Pre   ");
      lcd.setCursor(0,1);
      lcd.print("Etapa Essenciai"); 
      delay(3000);
      lcd.clear();
         /*****/
      nnao = 0;
      nao = 0; 
      escolha = 2;
  }
/********inicio das etapas de mostura********/
while(escolha == 3){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
  leituraT();
      if(sensors.getTempCByIndex(0) >= 45){
     
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 5){    //AJUSTE DE TEMPO 
     escolha = 4; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("Primeira Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
relogio();
      minu = 0;
     delay(3000);
     lcd.clear();
     }
}
/****************************/
while(escolha == 4){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
leituraT();
     if(sensors.getTempCByIndex(0) >= 52){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 10){    //AJUSTE DE TEMPO 
     escolha = 5; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("Segunda Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
relogio();
      minu = 0;
     delay(3000);
     lcd.clear();
     }
}
/**********************************/
while(escolha == 5){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
leituraT();
     if(sensors.getTempCByIndex(0) >= 64){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 60){    //AJUSTE DE TEMPO 
     escolha = 55; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("Terceira Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
relogio();
      minu = 0;
     delay(3000);
     lcd.clear();
     }
   }
/********************************/
while(escolha == 55){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
leituraT();
     if(sensors.getTempCByIndex(0) >= 76){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 10){    //AJUSTE DE TEMPO 
     escolha = 6; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("Quarta Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
relogio();
      minu = 0;
     delay(3000);
     lcd.clear();
     }
   }
  
/************fim das 3 atepas de mustura*******/
if(escolha == 6){
    lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Iniciando Etapa  ");
      lcd.setCursor(0,1);
      lcd.print(" De Fervura  ");
      
      delay(3000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Inicio da Etapa");
      lcd.setCursor(4,1);
      lcd.print("UM");
      delay(3000);
       escolha = 7;
      lcd.clear();
}
/********inicio das etapas de fervura********/
while(escolha == 7){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
  leituraT();
     if(sensors.getTempCByIndex(0) == 76){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 30){    //AJUSTE DE TEMPO 
     escolha = 21; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("Primeira Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
      relogio();
      minu = 0;
     delay(3000);
     lcd.clear();
     }
}
/************60min****************/
if(escolha == 21){
    lcd.setCursor(0,0);
    lcd.print("Insira o Hallertau");
    lcd.setCursor(5,1);
    lcd.print("25g"         );
    delay(3000);
    lcd.setCursor(0,0);
    lcd.print("Insira o  Saaz");
    lcd.setCursor(5,1);
    lcd.print("20g"         );
    delay(3000);
     lcd.clear();
   escolha = 8;
}
if(escolha == 8){
    lcd.setCursor(0,0);
    lcd.print("Produtos inserido?");
    lcd.setCursor(0,1);
    lcd.print("sim"           );
    lcd.setCursor(13,1);
    lcd.print("nao");
  }
    if(sim == 1 && escolha == 8){
      ssim = 2;    
    }
      if(ssim == 2){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Inicio da Etapa");
      lcd.setCursor(4,1);
      lcd.print("Dois");
      delay(3000);
       escolha = 9;
      lcd.clear();
        /*****/
  }
      if(nao == 1 && escolha == 8){
      nnao = 1;      
    }
      if(nnao == 1){
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("Realize A Pre   ");
      lcd.setCursor(0,1);
      lcd.print("Etapa Essenciai"); 
      delay(3000);
      lcd.clear();
         /*****/
      nnao = 0;
      nao = 0; 
      escolha = 8;
  }
/*******************************/
while(escolha == 9){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
  leituraT();
     if(sensors.getTempCByIndex(0) >= 76){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 30){    //AJUSTE DE TEMPO 
     escolha = 22; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("segunda Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
      relogio();
       minu = 0;
     delay(3000);
     lcd.clear();
     }
}
/************30****************/
if(escolha == 22){
  ssim = 0;
   sim = 0;
    lcd.setCursor(0,0);
    lcd.print("Insira o Hallertau");
    lcd.setCursor(5,1);
    lcd.print("10g"         );
    delay(3000);
    lcd.setCursor(0,0);
    lcd.print("Insira o  Saaz");
    lcd.setCursor(5,1);
    lcd.print("10g"         );
    delay(3000);
     lcd.clear();
   escolha = 10;
}
if(escolha == 10){
    lcd.setCursor(0,0);
    lcd.print("Produtos inserido?");
    lcd.setCursor(0,1);
    lcd.print("sim"           );
    lcd.setCursor(13,1);
    lcd.print("nao");
  }
    if(sim == 1 && escolha == 10){
      ssim = 2;    
    }
      if(ssim == 2){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Inicio da Etapa");
      lcd.setCursor(4,1);
      lcd.print("três");
      delay(3000);
       escolha = 11;
      lcd.clear();
        /*****/
  }
      if(nao == 1 && escolha == 1){
      nnao = 1;      
    }
      if(nnao == 1){
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("Realize A Pre   ");
      lcd.setCursor(0,1);
      lcd.print("Etapa Essenciai"); 
      delay(3000);
      lcd.clear();
         /*****/
      nnao = 0;
      nao = 0; 
      escolha = 8;
  }
/*******************************/
while(escolha == 11){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
  leituraT();
     if(sensors.getTempCByIndex(0) >= 76){
      lcd.setCursor(13,1);
     lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 25){    //AJUSTE DE TEMPO 
     escolha = 23; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("terceira Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
      relogio();
       minu = 0;
     delay(3000);
     lcd.clear();
     }
 }
/************5min******************/
if(escolha == 23){
  ssim = 0;
   sim = 0;
    lcd.setCursor(0,0);
    lcd.print("Insira o Hallertau");
    lcd.setCursor(5,1);
    lcd.print("25g"         );
    delay(3000);
    lcd.setCursor(0,0);
    lcd.print("Insira o  Saaz");
    lcd.setCursor(5,1);
    lcd.print("20g"         );
    delay(3000);
     lcd.clear();
   escolha = 10;
}
if(escolha == 10){
    lcd.setCursor(0,0);
    lcd.print("Produtos inserido?");
    lcd.setCursor(0,1);
    lcd.print("sim"           );
    lcd.setCursor(13,1);
    lcd.print("nao");
  }
    if(sim == 1 && escolha == 10){
      ssim = 2;    
    }
      if(ssim == 2){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Inicio da Etapa");
      lcd.setCursor(4,1);
      lcd.print("três");
      delay(3000);
       escolha = 12;
      lcd.clear();
        /*****/
  }
      if(nao == 1 && escolha == 1){
      nnao = 1;      
    }
      if(nnao == 1){
      lcd.clear();
      lcd.setCursor(3,0);
      lcd.print("Realize A Pre   ");
      lcd.setCursor(0,1);
      lcd.print("Etapa Essenciai"); 
      delay(3000);
      lcd.clear();
         /*****/
      nnao = 0;
      nao = 0; 
      escolha = 8;
  }
/***********************************/
while(escolha == 12){ //CTRAL+C / MUDAR ESCOLHA PARA VALOR DA OPÇAO A CIMA NO SIM 
   ssim = 0;
   sim = 0;
  leituraT();
     if(sensors.getTempCByIndex(0) >= 76){
      relogio();
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
      lcd.print("Temperatura");
      lcd.setCursor(11,0);
      lcd.print(minu);
      lcd.setCursor(3,0);
      lcd.print("Minutos:");       
      digitalWrite(led, 0);
   }
   else
   {
      
      digitalWrite(led, 1);
      lcd.setCursor(3,0);
      lcd.print("AJUSTANDO");
      lcd.setCursor(0,1);
      lcd.print("TEMPERATURA");
      lcd.setCursor(13,1);
      lcd.print(sensors.getTempCByIndex(0));
      lcd.setCursor(0,1);
   }
   if(minu == 5){    //AJUSTE DE TEMPO 
     escolha = 13; // MUDAR ESCOLHA PARA O PROXIMO NUMERO
        /****/  
     lcd.setCursor(0,0);
     lcd.print("quarta Etapa  "); //MUDAR SEQUENCIA
     lcd.setCursor(0,1);
     lcd.print("    Concluida       ");
      relogio();
       minu = 0;
     delay(3000);
     lcd.clear();
     }
 }
    
/********************************************/    
    if(escolha == 13){
    lcd.setCursor(0,0);
    lcd.print("Escolhar sua");
    lcd.setCursor(0,1);
    lcd.print("Proxima receita");
    delay(2000);
    lcd.setCursor(1,0);
    lcd.print("Voltando para");
    lcd.setCursor(5,1);
    lcd.print("O menu");
    delay(2000);
      conta = 0;
      escolha = 0;
      lcd.clear();
  }
}

void relogio(){
  
  int time = millis();
  int realtemp = time / 1000;
  seg++;
  Serial.println(seg);


int tempo = millis();
int ult_tempo;
if(tempo - ult_tempo >= 1000)

/*****************/
if(seg >= 60) {
seg = 0;
minu++;
}
/**************/
if(minu == 60) {
minu = 0;
realtemp++;
 }
}

Considerações Finais

Muito legal ver que você chegou até aqui. Espero que tenha entendido o artigo. No caso de dúvidas, pode deixar nos comentários, abaixo. Antes de ir, quero te desafiar: depois de montar e testar tudo, crie uma área que permita ao usuário que adicione uma receita própria no aplicativo. Assim, ele poderá alterar e configurar manualmente pela interface gráfica, sem precisar entrar no código fonte.

Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!


Sobre o Autor


João Vitor
@v_ribeiro_v

Sou uma pessoa extremamente curiosa, acredito que viver é muito mais do que simplesmente aceitar as coisas com elas são. Por isso iniciei meus estudos nessa área de eletrônica para ir mais a fundo nesse mundo de tecnologia que nos consome cada dia mais.


Eletrogate

21 de junho de 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!