Exercício 2.8 melhorado
Ter Jul 14, 2020 4:01 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 ledVerde 2 //pino2 vai se chamar ledVerde
#define ledAmarelo 3 //pino3 vai se chamar ledAmarelo
#define ledVerm 4 //pino4 vai se chamar ledVerm
#define ntc A0 //pino A0 vai se chamar ntc
#define buzzer 5 //pino 5 vai se chamar buzzer
#define tecla 6
//DECLARAcAO DE VARIAVEIS GLOBAIS
int temperatura;
int som;
int tBuzzer;
int estadoBuzzer;
bool estadoLed = 0;
bool teclaPressionada = 0;
bool estadoLed1, estadoLed2 = 0; //declaração de variavel
unsigned long tLed1, tLed2 = 0; //declaração de variavel
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //porta serial que abriu
pinMode(ledVerde,OUTPUT); //ledVerde configurado como saida
pinMode(ledAmarelo,OUTPUT); //ledAmarelo configurado como saida
pinMode(ledVerm,OUTPUT); //ledVerm configurado como saida
pinMode(tecla, INPUT_PULLUP);//
}
//FUNÇÕES COMPLEMENTARES
void debug(){
Serial.print("millis() = ");
Serial.print(millis());
Serial.print("tLed1 = ");
Serial.println(tLed1);
Serial.print("tLed1 = ");
Serial.println(tLed1);
Serial.println(analogRead(ntc));
}
//PROGRAMA PRINCIPAL
void loop() {
debug();
if(millis () > (tLed1 + 1000)){ //função if
tLed1 = millis(); //led com millis
estadoLed1 = !estadoLed1; //led com led negado
digitalWrite(ledVerde, estadoLed1); //led com variavel
}
if (millis() > (tLed2 + 300)){ //função if
tLed2 = millis (); //led com millis
estadoLed2 = !estadoLed2; //led com led negado
digitalWrite(ledAmarelo,estadoLed2); //led acende com variavel
}
if(millis() > (tBuzzer + 500)) //função if
tBuzzer = millis(); //buzzer com millis
estadoBuzzer = !estadoBuzzer; //estado buzzer
if(estadoBuzzer == 1){ //função if
tone(buzzer, 500);
}else{ //função else
noTone(buzzer); //buzzer com notone
}
digitalRead(tecla) == LOW && teclaPressionada;{// 0 && = 0; 0&&1=0 ; 1&&1=1;
teclaPressionada = 1;
estadoLed = ! estadoLed;
digitalWrite(ledVerm,estadoLed);
}
digitalRead(tecla) == HIGH && teclaPressionada;{
teclaPressionada = 0;
}
debug(); //debug ativo
temperatura = analogRead(ntc); //variavel que controla o pino
if(temperatura < 385) { //função if com a variavel
digitalWrite(ledVerde, HIGH); //pino acende
digitalWrite(ledAmarelo, LOW); //pino não acende
digitalWrite(ledVerm, LOW); //pino não acende
}
else if (temperatura <=563){ //função else if
digitalWrite(ledVerde, LOW); //pino apaga
digitalWrite(ledAmarelo, HIGH); //pino acende
digitalWrite(ledVerm, LOW); //pino não acende
}else{ //função else
digitalWrite(ledVerde, LOW); //pino não acende
digitalWrite(ledAmarelo, LOW); //pino apaga
digitalWrite(ledVerm, HIGH); //pino acende
}
}
* 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 ledVerde 2 //pino2 vai se chamar ledVerde
#define ledAmarelo 3 //pino3 vai se chamar ledAmarelo
#define ledVerm 4 //pino4 vai se chamar ledVerm
#define ntc A0 //pino A0 vai se chamar ntc
#define buzzer 5 //pino 5 vai se chamar buzzer
#define tecla 6
//DECLARAcAO DE VARIAVEIS GLOBAIS
int temperatura;
int som;
int tBuzzer;
int estadoBuzzer;
bool estadoLed = 0;
bool teclaPressionada = 0;
bool estadoLed1, estadoLed2 = 0; //declaração de variavel
unsigned long tLed1, tLed2 = 0; //declaração de variavel
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //porta serial que abriu
pinMode(ledVerde,OUTPUT); //ledVerde configurado como saida
pinMode(ledAmarelo,OUTPUT); //ledAmarelo configurado como saida
pinMode(ledVerm,OUTPUT); //ledVerm configurado como saida
pinMode(tecla, INPUT_PULLUP);//
}
//FUNÇÕES COMPLEMENTARES
void debug(){
Serial.print("millis() = ");
Serial.print(millis());
Serial.print("tLed1 = ");
Serial.println(tLed1);
Serial.print("tLed1 = ");
Serial.println(tLed1);
Serial.println(analogRead(ntc));
}
//PROGRAMA PRINCIPAL
void loop() {
debug();
if(millis () > (tLed1 + 1000)){ //função if
tLed1 = millis(); //led com millis
estadoLed1 = !estadoLed1; //led com led negado
digitalWrite(ledVerde, estadoLed1); //led com variavel
}
if (millis() > (tLed2 + 300)){ //função if
tLed2 = millis (); //led com millis
estadoLed2 = !estadoLed2; //led com led negado
digitalWrite(ledAmarelo,estadoLed2); //led acende com variavel
}
if(millis() > (tBuzzer + 500)) //função if
tBuzzer = millis(); //buzzer com millis
estadoBuzzer = !estadoBuzzer; //estado buzzer
if(estadoBuzzer == 1){ //função if
tone(buzzer, 500);
}else{ //função else
noTone(buzzer); //buzzer com notone
}
digitalRead(tecla) == LOW && teclaPressionada;{// 0 && = 0; 0&&1=0 ; 1&&1=1;
teclaPressionada = 1;
estadoLed = ! estadoLed;
digitalWrite(ledVerm,estadoLed);
}
digitalRead(tecla) == HIGH && teclaPressionada;{
teclaPressionada = 0;
}
debug(); //debug ativo
temperatura = analogRead(ntc); //variavel que controla o pino
if(temperatura < 385) { //função if com a variavel
digitalWrite(ledVerde, HIGH); //pino acende
digitalWrite(ledAmarelo, LOW); //pino não acende
digitalWrite(ledVerm, LOW); //pino não acende
}
else if (temperatura <=563){ //função else if
digitalWrite(ledVerde, LOW); //pino apaga
digitalWrite(ledAmarelo, HIGH); //pino acende
digitalWrite(ledVerm, LOW); //pino não acende
}else{ //função else
digitalWrite(ledVerde, LOW); //pino não acende
digitalWrite(ledAmarelo, LOW); //pino apaga
digitalWrite(ledVerm, HIGH); //pino acende
}
}
Re: Exercício 2.8 melhorado
Ter Jul 21, 2020 10:18 pm
Oi Daniel, legal que fez o exercício, esse vai ajudar a desenvolver a técnica, tem bastante amarração.
Testei e não funcionou, vou colocar os pontos que precisa corrigir.
1 - a variável tBuzzer não foi declarada
2 - a variável estadoBuzzer também não foi declarada
3 - No define o buzzer deve ser colocado numa saída digital e não na entrada analógica
4 - Faltou a tecla para desativar o alarme
5 - O alarme fica disparado o tempo todo, mesmo com a temperatura baixa, isso porque o bloco do buzzer deve ficar dentro do bloco que acende o led vermelho, se sair dali o buzzer deve parar
6 - Vai precisar de mais uma variável de controle para acionar o buzzer, e deve ligar se a temperatura estiver alta e o buzzer ativado, se ligou E
7 - Precisa também dos códigos de leitura de tecla para acionar e desacionar o controle do buzzer
Por enquanto a nota será 5.0, mas vai arrumando o programa que vou te ajudando e melhorando a nota.
Testei e não funcionou, vou colocar os pontos que precisa corrigir.
1 - a variável tBuzzer não foi declarada
2 - a variável estadoBuzzer também não foi declarada
3 - No define o buzzer deve ser colocado numa saída digital e não na entrada analógica
4 - Faltou a tecla para desativar o alarme
5 - O alarme fica disparado o tempo todo, mesmo com a temperatura baixa, isso porque o bloco do buzzer deve ficar dentro do bloco que acende o led vermelho, se sair dali o buzzer deve parar
6 - Vai precisar de mais uma variável de controle para acionar o buzzer, e deve ligar se a temperatura estiver alta e o buzzer ativado, se ligou E
7 - Precisa também dos códigos de leitura de tecla para acionar e desacionar o controle do buzzer
Por enquanto a nota será 5.0, mas vai arrumando o programa que vou te ajudando e melhorando a nota.
Permissões neste sub-fórum
Não podes responder a tópicos
|
|