Montei um circuito de detecção de temperatura no qual quando a temperatura aumenta os led´s acendem do verde, passando no amarelo e chegando no vermelho (temperatura alta) (ValorSensor > 560) nesse momento um alarme (buzzer) soa, e quando o valor abaixa de 560 o Buzzer desliga, e os led´s vão se desligando a medida que a temperatura cai;

Ai é que vem o meu problema!!!!... eu gostaria que o buzzer continuasse ligado até o led amarelo apagar 525, e não quando a temperatura abaixa-se dos 560 pois o alarme desliga muito rapidamente! Acho que deveria usar o comando while porém de todas as formas que fiz não obtive êxito.

Segue abaixo o código que construí, se alguém puder me ajudar ficarei muito grato.

Abraços e uma semana de sucesso a todos.

 

const int PinoSensor = 0;
const int Buzzer = 4;
const int led1 = 5;
const int led2 = 6;
const int led3 = 7;
const int led4 = 8;
const int led5 = 9;
const int led6 = 10;
const int led7 = 11;
const int led8 = 12;
int ValorSensor = 0;
void setup(){
pinMode(Buzzer, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
Serial.begin(9600);
}
void loop(){
ValorSensor = analogRead(PinoSensor);
Serial.print("Valor do Sensor = ");
Serial.println(ValorSensor);
if (ValorSensor > 500){
digitalWrite(led1, HIGH);
}
else{
digitalWrite(led1, LOW);
}
if (ValorSensor > 505){
digitalWrite(led2, HIGH);
}
else{
digitalWrite(led2, LOW);
}
if (ValorSensor > 510){
digitalWrite(led3, HIGH);
}
else{
digitalWrite(led3, LOW);
}
if (ValorSensor > 520){
digitalWrite(led4, HIGH);
}
else{
digitalWrite(led4, LOW);
}
if (ValorSensor > 525){
digitalWrite(led5, HIGH);
}
else{
digitalWrite(led5, LOW);
}
if (ValorSensor > 530){
digitalWrite(led6, HIGH);
}
else{
digitalWrite(led6, LOW);
}
if (ValorSensor > 540){
digitalWrite(led7, HIGH);
}
else{
digitalWrite(led7, LOW);
}
if (ValorSensor > 560){
digitalWrite(led8, HIGH);
digitalWrite(Buzzer, HIGH);
}
else{
digitalWrite(led8, LOW);
digitalWrite(Buzzer, LOW);
}
}

 

Exibições: 516

Responder esta

Respostas a este tópico

Chefe tenta o seguinte. 

Cria uma variável de controle de nome qualquer. 

Sete ela para 0 no Setup. 

O acionamento do buzzer será feito pela leitura dessa variável e não mais pelo valor do sensor. digitalWrite(Buzzer, variavel)  //Coloca na última linha do loop fora de qualquer if

Você irá setar a variável de controle para 1 na leitura máxima, e estará para 0 no else do if que tem a leitura mínima. 

Dessa forma seu buzzer irá acionar quando atingir a temperatura máxima e só desligar quando atingir a mínima que você definir. 

Vitor valeu pela sua idéia irmão me ajudou muito!!!!!!

Saúde e sucesso pra vc.

Abraços. 

Testa assim

if (ValorSensor > 560){
digitalWrite(led8, HIGH);
digitalWrite(Buzzer, HIGH);}

else{
digitalWrite(led8, LOW);}

if (ValorSensor < 525){

digitalWrite(Buzzer, LOW);

}

Cabecavil deu certo irmão!!!!!!!!!

Show de bola, show de bola!!!!!!!

Muito obrigado, e tenha uma ótima semana.

aqui neste trecho do codigo

else{
digitalWrite(led8, LOW);
digitalWrite(Buzzer, LOW);
}

retire o digitalWrite(Buzzer, LOW);

faca outro if assim

if (ValorSensor < 525){
digitalWrite(Buzzer, LOW);
}

 blz mano.

SuperTec valeu pela sua ajuda!!!!!

Com essa mudança no código que vc me enviou tudo funcionou perfeitamente!!!!!!

Abraços a vc e tenha uma semana de vitórias!!!!!

Caro Marcos,

Sendo este um site de aficcionados, mas também de carater técnico, evite títulos do tipo "Socorro me ajudem" ou "Por favor me ajudem". Seja claro, e no titulo já especifique brevemente o seu problema, tipo "Auxilio para meu sketch".

Já dá uma pista para o seu problema e interessados em ajudar acessarão diretamente.

Esta orientação inclusive já foi alvo de comentários do Marcelo, o "pai" do LDG. Um abraço.

Lauro obrigado pelo direcionamento; em abordagens futuras tentarei ser mais específico. Abraços e ótima semana.

Ok. Boa semana para voce também.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço