Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
/
/
Automatização do Processo de Brassagem

Automatização do Processo de Brassagem

Sumário

Baixe agora a apostila Arduino Iniciante e comece seus projetos

Compartilhe seu conhecimento e receba em dinheiro ou produtos.

blog-eletrogate-automatizacao-processo-brassagem-capa

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.

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.

Precisa dos componentes para este projeto?

Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200