- Sr.Sucrilhos
- Mensagens : 103
Data de inscrição : 30/03/2022
Idade : 12
Escola : São Cristovão
exercicio 2.8 para te ajudar paulo deixei cada função separada
Qui Mar 30, 2023 7:09 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 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 LED_VERDE 2 //pino 2 definido como LED_VERDE
#define LED_AMARELO 3 //pino 3 definido como LED_AMARELO
#define LED_VERMELHO 4 //pino 4 definido como LED_VERMELHO
#define BUZZER 5 //pino 5 definido como BUZZER
#define BTN 6 //pino 6 definido como BTN
#define NTC A0 //pino A0 definido como NTC
//DECLARACAO DE VARIAVEIS GLOBAIS
int temperatura; // variável para armazenar a leitura da temperatura
int alarmeAtivo = 0; // variável para controlar o estado do alarme
unsigned long ultimaPressaoBtn = 0; // variável para armazenar o momento da última pressão do botão
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); // liga o monitor serial com a velocidade de 9600
pinMode(LED_VERDE, OUTPUT); // LED_VERDE configurado como saída
pinMode(LED_AMARELO, OUTPUT); // LED_AMARELO configurado como saída
pinMode(LED_VERMELHO, OUTPUT); // LED_VERMELHO configurado como saída
pinMode(BUZZER, OUTPUT); // BUZZER configurado como saída
pinMode(BTN, INPUT_PULLUP); // BTN configurado como entrada pullup
}
//FUNÇÕES COMPLEMENTARES
void imprimeTemperatura() {
temperatura = analogRead(NTC); // lê a temperatura do NTC
Serial.println(temperatura); // imprime a temperatura no monitor serial
delay(200); // pausa sequencial de 200 milissegundos
}
//PROGRAMA PRINCIPAL
void loop() {
imprimeTemperatura(); // chama a função para ler e imprimir a temperatura
if (temperatura < 90) {
digitalWrite(LED_VERDE, HIGH);
digitalWrite(LED_AMARELO, LOW);
digitalWrite(LED_VERMELHO, LOW);
} else if (temperatura < 120) {
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARELO, HIGH);
digitalWrite(LED_VERMELHO, LOW);
} else {
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARELO, LOW);
digitalWrite(LED_VERMELHO, HIGH);
if (digitalRead(BTN)) { // verifica se o botão foi pressionado
tone(BUZZER, 1049); // ativa o buzzer na frequência 1049 Hz
delay(500); // pausa de 500 milissegundos
noTone(BUZZER); // desliga o buzzer
delay(500); // pausa de 500 milissegundos
} else {
noTone(BUZZER); // desliga o buzzer
alarmeAtivo = 1; // define o alarme como ativo
}
}
}
* 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 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 LED_VERDE 2 //pino 2 definido como LED_VERDE
#define LED_AMARELO 3 //pino 3 definido como LED_AMARELO
#define LED_VERMELHO 4 //pino 4 definido como LED_VERMELHO
#define BUZZER 5 //pino 5 definido como BUZZER
#define BTN 6 //pino 6 definido como BTN
#define NTC A0 //pino A0 definido como NTC
//DECLARACAO DE VARIAVEIS GLOBAIS
int temperatura; // variável para armazenar a leitura da temperatura
int alarmeAtivo = 0; // variável para controlar o estado do alarme
unsigned long ultimaPressaoBtn = 0; // variável para armazenar o momento da última pressão do botão
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); // liga o monitor serial com a velocidade de 9600
pinMode(LED_VERDE, OUTPUT); // LED_VERDE configurado como saída
pinMode(LED_AMARELO, OUTPUT); // LED_AMARELO configurado como saída
pinMode(LED_VERMELHO, OUTPUT); // LED_VERMELHO configurado como saída
pinMode(BUZZER, OUTPUT); // BUZZER configurado como saída
pinMode(BTN, INPUT_PULLUP); // BTN configurado como entrada pullup
}
//FUNÇÕES COMPLEMENTARES
void imprimeTemperatura() {
temperatura = analogRead(NTC); // lê a temperatura do NTC
Serial.println(temperatura); // imprime a temperatura no monitor serial
delay(200); // pausa sequencial de 200 milissegundos
}
//PROGRAMA PRINCIPAL
void loop() {
imprimeTemperatura(); // chama a função para ler e imprimir a temperatura
if (temperatura < 90) {
digitalWrite(LED_VERDE, HIGH);
digitalWrite(LED_AMARELO, LOW);
digitalWrite(LED_VERMELHO, LOW);
} else if (temperatura < 120) {
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARELO, HIGH);
digitalWrite(LED_VERMELHO, LOW);
} else {
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARELO, LOW);
digitalWrite(LED_VERMELHO, HIGH);
if (digitalRead(BTN)) { // verifica se o botão foi pressionado
tone(BUZZER, 1049); // ativa o buzzer na frequência 1049 Hz
delay(500); // pausa de 500 milissegundos
noTone(BUZZER); // desliga o buzzer
delay(500); // pausa de 500 milissegundos
} else {
noTone(BUZZER); // desliga o buzzer
alarmeAtivo = 1; // define o alarme como ativo
}
}
}
- Sr.Sucrilhos
- Mensagens : 103
Data de inscrição : 30/03/2022
Idade : 12
Escola : São Cristovão
Re: exercicio 2.8 para te ajudar paulo deixei cada função separada
Qui Mar 30, 2023 7:10 pm
Re: exercicio 2.8 para te ajudar paulo deixei cada função separada
Qui Abr 06, 2023 12:07 am
Oi Pablo, fiz o teste do programa, mas ele não acionou o alarme, então não funcionou.
No enunciado tem várias funcionalidades e tem que atender a todas para considerar o programa entregue.
Nota 6.0
No enunciado tem várias funcionalidades e tem que atender a todas para considerar o programa entregue.
Nota 6.0
- Sr.Sucrilhos
- Mensagens : 103
Data de inscrição : 30/03/2022
Idade : 12
Escola : São Cristovão
Re: exercicio 2.8 para te ajudar paulo deixei cada função separada
Sáb Dez 09, 2023 11:02 am
corrigi
- Thiaguin
- Mensagens : 176
Data de inscrição : 03/03/2020
Re: exercicio 2.8 para te ajudar paulo deixei cada função separada
Sáb maio 04, 2024 11:07 am
há um erro na lógica do botão
Permissões neste sub-fórum
Não podes responder a tópicos