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.
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.
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.


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.
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++;
}
}
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!
|
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!