Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Thiaguin
Thiaguin
Mensagens : 176
Data de inscrição : 03/03/2020

Exercício 2.08 Painel da Caldeira Empty Exercício 2.08 Painel da Caldeira

Seg Ago 10, 2020 5:10 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.8
* Tema: Painel da Caldeira
* Atividade: Termometro e Alarme de Temperatura com Buzzer permitindo o Desacionamento
* Descrição: Essa encomenda é de um painel para caldeira, com temperaturas abaixo de 90 graus led verde, entre 90 e 120 led amarelo, acima de 120 led vermelho e buzzer
* Hardware: Ligar os leds e o buzzer em pinos digital configurado como SAÍDA e o NTC em uma entrada analógica e uma tecla numa entrada PULL_UP
* Comandos: pinMode, analogRead, digitalWrite,IF / ELSE / IF, millis(), tone()
* Dica1:Os alarmes necessitam de mecanismo para desligar a sinalização para sonora, isso ajuda o operador no controle do stress
* Dica2:Usar o termometro de leds para indicar o status da temperatura da caldeira
* Dica3:Usar a intermitecncia para gerar a sinalização sonora no buzzer, usar frequencias entre 500 e 3000HZ
* Dica4:Quando o alarme estiver ativo e a tecla pressionada deve silenciar o alarme sonoro, usar uma variável para controlar o estado do alarme
* Dica5:Caso a temperatura baixe, e em seguida torne a subir o alarme sonoro deve ser acionado novamente
*/

//DEFINICOES INICIAIS
#define led1 2 // Definido que o pino 2 irá se chamar led1
#define led2 3 // Definido que o pino 3 irá se chamar led2
#define led3 4 // Definido que o pino 4 irá se chamar led3
#define tecla 5 // Definido que o pino 5 irá se chamar tecla
#define buzzer 6 // Definido que o pino 6 irá se chamar buzzer
#define ntc A0 // Definido que o pino A0 irá se chamar ntc

//DECLARAcAO DE VARIAVEIS GLOBAIS
int temperatura ;//Variável para ser atribuído o valor da temperatura
bool teclapressionada ;//Variável para ser atribuído o valor da leitura da tecla
bool ativacaobuzzer ;//Variável para controlar a ativação do buzzer
bool emissaosonora ;//Variável para controlar a intermitencia do buzzer
unsigned long tempobuzzer ;//Variável para guardar o tempo de execução da última intermitecia do buzzer

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1,OUTPUT);//Configurado o pino 2 como saída
pinMode(led2,OUTPUT);//Configurado o pino 3 como saída
pinMode(led3,OUTPUT);//Configurado o pino 4 como saída
pinMode(tecla,INPUT_PULLUP);//Configurado o pino 5 como saída com um resistor de polarização
pinMode(buzzer,OUTPUT);//Configurado o pino 6 como saída
Serial.begin(9600);//Porta serial inicializada
}

//FUNÇÕES COMPLEMENTARES
void debug(){
temperatura=analogRead(ntc);//O valor lido no ntc será atribuído à variável da temperatura
Serial.print("temperatura=");//Quando a função for ativada ele colocará o valor debaixo
Serial.println(temperatura);//O valor lido no ntc será mandado para o monitor serial
}


//PROGRAMA PRINCIPAL
//90°C=817     120°C=911
void loop() {
debug();//A função complementar será ativada
if(temperatura<817){//Se o valor da variável temperatura for menor que 817 , a função será verdadeira e irá rodar o bloco abaixo
digitalWrite(led1,LOW);//O led1 ficará apagado
digitalWrite(led2,LOW);//O led2 ficará apagado
digitalWrite(led3,HIGH);//O led3 irá acender
noTone(buzzer);//O buzzer ficará desativado
ativacaobuzzer=1;//O valor da variável ativacaobuzzer será igual a 1
teclapressionada=0;//O valor da variável teclapressionada será igual a 0  
}
else if(temperatura<=911){//Se o valor da variável temperatura for menor ou igual a 911 e maior que 817 , a função será verdadeira e irá rodar o bloco abaixo
digitalWrite(led1,LOW);//O led1 ficará apagado
digitalWrite(led2,HIGH);//O led2 irá acender
digitalWrite(led3,LOW);//O led3 ficará apagado
noTone(buzzer);//O buzzer ficará desativado
ativacaobuzzer=1;//O valor da variável ativacaobuzzer será igual a 1  
}else{//Se o valor da variável temperatura for maior que 911 , irá rodar o bloco abaixo
digitalWrite(led1,HIGH);//O led1 irá acender
digitalWrite(led2,LOW);//O led2 ficará apagado
digitalWrite(led3,LOW);//O led3 ficará apagado  
if(!digitalRead(tecla)&&teclapressionada==0){//Se o valor lido na tecla for igual ao valor da variável teclapressionada , a função será verdadeira e irá rodar o bloco abaixo
teclapressionada=1;//O valor da variável teclapressionada será igual a 1
ativacaobuzzer=!ativacaobuzzer;//O valor da variável ativacaobuzzer será o inverso dela
}
if(digitalRead(tecla)&&teclapressionada==1){//Se o valor lido na tecla for igual ao valor da variável teclapressionada , a função será verdadeira e irá rodar o bloco abaixo
teclapressionada=0;//O valor da variável teclapressionada será igual a 0  
}
if(millis()>(tempobuzzer+500)&&ativacaobuzzer==1){//Se o valor do millis for maior que o valor da variável tempobuzzer somado a 500 milesegundos e a soma for igual ao valor da variável ativacaobuzzer , a função será verdadeira e irá rodar o bloco abaixo
tempobuzzer=millis();//A variável do tempo do buzzer irá ser somada com valor do millis  
emissaosonora=!emissaosonora;//O valor da variável emissaosonora será o inverso dela
}
if(emissaosonora==1){//Se o valor da variável emissaosonora for igual a 1 , a função será verdadeira e irá rodar o bloco abaixo
noTone(buzzer);//O buzzer ficará desativado  
}else{//Se o valor da variável emissaosonora não for igual a 1 , irá rodar o bloco abaixo
tone(buzzer,1500);//O buzzer será ativado com uma frequência de 1500Hz  
}
}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.08 Painel da Caldeira Empty Re: Exercício 2.08 Painel da Caldeira

Qua Ago 12, 2020 12:47 am
Thiago, Voce conseguiu, o programa está funcionando conforme solicitado.
Voce já pode se dizer programador, orgulho.
Nota 10.0
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos