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

Ir para baixo
Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Resolvido 2.8 Empty Resolvido 2.8

Ter Set 14, 2021 9:44 am
/*
* 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 Temperature ;//Variável tipo Int "Temperature"
bool TeclaPressionada ;//Variável tipo Bool "TeclaPressionada"
bool Tecla ;//Variável tipo Bool "Tecla"
bool Buzzer ;//Variável tipo Bool "Buzzer"
unsigned long Tempo ;//Variável tipo unsigned long "Tempo"

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//Inicializa Porta Serial
pinMode(led1,OUTPUT);//Programado led1 como "Saída"
pinMode(led2,OUTPUT);//Programado led2 como "Saída"
pinMode(led3,OUTPUT);//Programado led3 como "Saída"
pinMode(tecla,INPUT_PULLUP);//Programado tecla como "Entrada"
pinMode(buzzer,OUTPUT);//Programado buzzer como "Saída"

//FUNÇÕES COMPLEMENTARES
temperature=analogRead(ntc);//O valor que vai ser lido no ntc será atribuído à variável temperature
Serial.print("temperature=");//Quando se o valor da função for ativada ele colocará o valor debaixo
Serial.println(temperature);//O valor que vai ser lido no ntc será mandado para o monitor serial
}
//PROGRAMA PRINCIPAL
//90°C=889 120°C=999
void loop() {
debug();//Será ativada a função complementar
if(temperature<889){//Se o valor da variável temperature for menor que 889 , a função será verdadeira e irá rodar o bloco abaixo
digitalWrite(led1,LOW);//Apaga o led1
digitalWrite(led2,LOW);//Apaga o led2
digitalWrite(led3,HIGH);//Acende o led3
noTone(buzzer);//O Buzzer ficara Desativado
Tecla=1;//O valor da variável Tecla será igual a 1
TeclaPressionada=0;//O valor da variável TeclaPressionada será igual a 0
}
else if(temperature<=999){//Se o valor da variável temperature for menor ou igual a 999 e maior que 889 , a função será verdadeira e irá rodar o bloco abaixo
digitalWrite(led1,LOW);//Apaga o led1
digitalWrite(led2,HIGH);//Acende o led2
digitalWrite(led3,LOW);//Apaga o led3
noTone(buzzer);//O Buzzer ficará Desativado
Tecla=1;//O valor da variável Tecla será igual a 1
}else{//Se o valor da variável temperatura for maior que 999 , irá rodar o bloco abaixo
digitalWrite(led1,HIGH);//Acende o led1
digitalWrite(led2,LOW);//Apaga o led2
digitalWrite(led3,LOW);//Apaga o led3
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
Tecla=!Tecla;//O valor da variável Tecla será o inverso do 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()>(Tempo+500)&&Tecla==1){//Se o valor do millis for maior que o valor da variável Tempo somado a 500 milesegundos e a soma for igual ao valor da variável Tecla , a função será verdadeira e irá rodar o bloco abaixo
Tempo=millis();//A variável do tempo do buzzer irá ser somada com valor do millis
Buzzer=!Buzzer;//O valor da variável Buzzer será o inverso dela
}
if(Buzzer==1){//Se o valor da variável Buuzzer 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 Buzzer não for igual a 1 , irá rodar o bloco abaixo
tone(buzzer,1550);//O buzzer será ativado com uma frequência de 1550Hz
}
}
}

Resolvido 2.8 Wink Wink Wink Wink
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Resolvido 2.8 Empty Re: Resolvido 2.8

Qui Set 16, 2021 1:04 am
Oi Moinica, Corrigi seu exercício e tem alguns pontos que precisam ser corrigidos.
1 - Afunção setup() precisa estar entre chaves e não foi fechada as chaves
2 - Precisa manter a função debug(), nela que é lio a o NTC e carregado o valor na variáveltemperatura
3 - Falando nessa variável a declaração dela precisa ser exatamente igual como é utilizado, tipo diferencia maiusculo de minusculo
4 - O buzzer não voltou a tocar quando a temperatura sobe - desce - sobe

Vou dar nota 6.0 até ajustar o programa
Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Resolvido 2.8 Empty Re: Resolvido 2.8

Qui Out 28, 2021 8:32 am
/*
* 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 Temperature ;//Variável tipo Int "Temperature"
bool TeclaPressionada ;//Variável tipo Bool "TeclaPressionada"
bool Tecla ;//Variável tipo Bool "Tecla"
bool Buzzer ;//Variável tipo Bool "Buzzer"
unsigned long Tempo ;//Variável tipo unsigned long "Tempo"

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//Inicializa Porta Serial
pinMode(led1,OUTPUT);//Programado led1 como "Saída"
pinMode(led2,OUTPUT);//Programado led2 como "Saída"
pinMode(led3,OUTPUT);//Programado led3 como "Saída"
pinMode(tecla,INPUT_PULLUP);//Programado tecla como "Entrada"
pinMode(buzzer,OUTPUT);//Programado buzzer como "Saída"
}
//FUNÇÕES COMPLEMENTARES
Temperature=analogRead(ntc);//O valor que vai ser lido no ntc será atribuído à variável temperature
Serial.print("Temperature=");//Quando se o valor da função for ativada ele colocará o valor debaixo
Serial.println(Temperature);//O valor que vai ser lido no ntc será mandado para o monitor serial
}
//PROGRAMA PRINCIPAL
//90°C=889 120°C=999
void loop() {
debug();//Será ativada a função complementar
if(Temperature<889){//Se o valor da variável temperature for menor que 889 , a função será verdadeira e irá rodar o bloco abaixo
digitalWrite(led1,LOW);//Apaga o led1
digitalWrite(led2,LOW);//Apaga o led2
digitalWrite(led3,HIGH);//Acende o led3
noTone(Tuzzer);//O Buzzer ficara Desativado
Tecla=1;//O valor da variável Tecla será igual a 1
TeclaPressionada=0;//O valor da variável TeclaPressionada será igual a 0
}
else if(Temperature<=999){//Se o valor da variável temperature for menor ou igual a 999 e maior que 889 , a função será verdadeira e irá rodar o bloco abaixo
digitalWrite(led1,LOW);//Apaga o led1
digitalWrite(led2,HIGH);//Acende o led2
digitalWrite(led3,LOW);//Apaga o led3
noTone(Buzzer);//O Buzzer ficará Desativado
Tecla=1;//O valor da variável Tecla será igual a 1
}else{//Se o valor da variável temperatura for maior que 999 , irá rodar o bloco abaixo
digitalWrite(led1,HIGH);//Acende o led1
digitalWrite(led2,LOW);//Apaga o led2
digitalWrite(led3,LOW);//Apaga o led3
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
Tecla=!Tecla;//O valor da variável Tecla será o inverso do 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()>(Tempo+500)&&Tecla==1){//Se o valor do millis for maior que o valor da variável Tempo somado a 500 milesegundos e a soma for igual ao valor da variável Tecla , a função será verdadeira e irá rodar o bloco abaixo
Tempo=millis();//A variável do tempo do buzzer irá ser somada com valor do millis
Buzzer=!Buzzer;//O valor da variável Buzzer será o inverso dela
}
if(Buzzer==1){//Se o valor da variável Buuzzer 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 Buzzer não for igual a 1 , irá rodar o bloco abaixo
tone(buzzer,1550);//O buzzer será ativado com uma frequência de 1550Hz
}
}
}

Bom Diaaaa e agora eu acertei ?? refiz so nao sei se esta certo
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Resolvido 2.8 Empty Re: Resolvido 2.8

Seg Nov 22, 2021 11:26 pm
Oi Monica, to sabendo que copiou do Thiago, mas tem que fazer os comentáruos seus e com sua interpretação.
Outra dica, quando trocar o nome das variáveis tem que trocar de todas, para isso usa o CTR+F para localizar na pagina todas elas. Claro que se não trocou todas não vai funcionar.
Esse exercício é um dos mais dificeis, então só ajusta os comentários os nomes das variáveis, corrige os erros. Isso tem que saber fazer.

Vou dar nota 5.0 até colocar ele para rodar.
Monica Moreno
Monica Moreno
Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas

Resolvido 2.8 Empty Re: Resolvido 2.8

Qui Dez 02, 2021 9:45 am
/*
* 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 Temperature ;//Variável tipo Int "Temperature"
bool TeclaPressionada ;//Variável tipo Bool "TeclaPressionada"
bool Tecla ;//Variável tipo Bool "Tecla"
bool Buzzer ;//Variável tipo Bool "Buzzer"
unsigned long Tempo ;//Variável tipo unsigned long "Tempo"

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//Inicializa Porta Serial
pinMode(led1,OUTPUT);//Programado led1 como "Saída"
pinMode(led2,OUTPUT);//Programado led2 como "Saída"
pinMode(led3,OUTPUT);//Programado led3 como "Saída"
pinMode(tecla,INPUT_PULLUP);//Programado tecla como "Entrada"
pinMode(buzzer,OUTPUT);//Programado buzzer como "Saída"
}
//FUNÇÕES COMPLEMENTARES
void debug(){
Temperature=analogRead(ntc);//Aqui o valor lido no ntc vai ser atribuido para a variavel Temperature
Serial.print("Temperature=");//Se o valor da função for ativada o valor vai ficar em baixo
Serial.println(Temperature);//Aqui o valor vai ser lido no ntc vai ser mandado para o monitor serial
}
//PROGRAMA PRINCIPAL
//90°C=889 120°C=999
void loop() {
debug();//A função complementar vai ser ativada
if(Temperature<889){//No caso do valor da variavel Temperature for menor que 889, a função vai ser verdadeira,e vai rodar o bloco abaixo
digitalWrite(led1,LOW);//Apaga o led1
digitalWrite(led2,LOW);//Apaga o led2
digitalWrite(led3,HIGH);//Acende o led3
noTone(Buzzer);//Desativa o Buzzer
Tecla=1;//Aqui o valor da variavel Tecla vai ser igual a 1
TeclaPressionada=0;//Aqui o valor da variavel TeclaPressionada vai ser igual a 0
}
else if(Temperature<=999){//Aqui o valor da variavel temperature for menos ou igual a 999 e maior que 889,no caso da função vai ser verdadeira, o bloco vai rodar
digitalWrite(led1,LOW);//Apaga o led1
digitalWrite(led2,HIGH);//Acende o led2
digitalWrite(led3,LOW);//Apaga o led3
noTone(Buzzer);//Desativa o Buzzer
Tecla=1;//Aqui o valor da variavel Tecla vai ser igual a 1
}else{//Aqui o valor temperatura for maior que 999, vai rodar o bloco abaixo
digitalWrite(led1,HIGH);//Acende o led1
digitalWrite(led2,LOW);//Apaga o led2
digitalWrite(led3,LOW);//Apaga o led3
if(!digitalRead(tecla)&&TeclaPressionada==0){//No caso do valor lido na tecla for igual ao valor da variavel TeclaPressiona, a função vai ser verdadeira e vai rodar o bloco abaixo
TeclaPressionada=1;//Aqui o valor da variavel TeclaPressionada vai ser igual a 1
Tecla=!Tecla;//Aqui o valor da variavel Tecla vai ser inverso da Tecla
}
if(digitalRead(tecla)&&TeclaPressionada==1){//No caso do valor lido na tecla for igual ao valor da variavel TeclaPressiona, a função vai ser verdadeira e vai rodar o bloco abaixo
TeclaPressionada=0;//Aqui o valor da variavel TeclaPressionada vai ser igual a 1
}
if(millis()>(Tempo+500)&&Tecla==1){//Aqui o valor de millis for maior que o valor da variavel tempo somando a 500 milesegundos e a soma for igual ao valor da variavel Tecla ,a função vai ser verdadeira vai rodar o blco abaixo
Tempo=millis();//No caso da variavel do tempo do buzzer vai ser somada com o valor do millis
Buzzer=!Buzzer;//Aqui o valor da variavel Buzzer vai ser o inverso dela
}
if(Buzzer==1){//No cado do valor da variavel Buzzer vai ser igual a 1,no caso a função vai ser verdadeira e vai rodar o bloco abaixo
noTone(buzzer);//Desliga o Buzzer
}else{//Aqui o valor da variavel Buzzer nao for igual a 1,vai rodar o bloco abaixo
tone(buzzer,1550);//Aqui o buzzer vai ser ativado com uma frequencia de 1500Hz
}
}
}

Refeito
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Resolvido 2.8 Empty Re: Resolvido 2.8

Sex Mar 11, 2022 10:11 pm
Muito bom Monica, nota 10.0
Conteúdo patrocinado

Resolvido 2.8 Empty Re: Resolvido 2.8

Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos