Repetição e encerramento

Oi, boa noite a todos!!

Estou criando um mini projetinho para fins de estudo e estou travado na parte da programação, estou fazendo um acionamento de um ventilador por meio de um sensor de temperatura( DS18B20 tipo sonda), porém quando o sensor chegar em 30 ºC ele deve acionar um buzzer que deve “apitar” 3 vezes e após isso acionar o relé ligando o ventilador. Testei a função While mas não esta funcionando da maneira certa, esta acionando o buzzer mesmo abaixo dos 30ºC.

alguém consegue me dar um Norte?

Meu código ate o momento esta assim:

#include <OneWire.h>
#include <DallasTemperature.h>

#define dados 2
#define buzzer 7

OneWire oneWire(dados);

DallasTemperature sensors(&oneWire);

void setup(void)
{

pinMode(buzzer, OUTPUT);
pinMode(pinPot, INPUT);
pinMode(dados, INPUT);
Serial.begin(9600);
Serial.println(“Demonstração do funcionamento do sensor”);
sensors.begin();
pinMode(buzzer, OUTPUT);

}
void loop(void)
{

Serial.print(" Requerimento de temperatura…");
sensors.requestTemperatures();
Serial.println(“Pronto”);

Serial.print("A temperatura é: "); /* Printa "A temperatura é:
Serial.print(sensors.getTempCByIndex(0));

if (sensors.getTempCByIndex(0) < 30){

digitalWrite(buzzer, LOW);

}else{

digitalWrite(buzzer, HIGH);
}

Sugiro voce usar um buzzer passivo e a instrução tone () para poder ter sons diferentes e controle do tempo. Da maneira que vc fez, quando a temperatura passar de 30, ele vai ficar soando sem parar. Voce deveria fazer uma variavel boolean ligado … de forma que quando estivesse ligado ele entraria em um if… quando estivesse desligado, entraria em outro if… dai vc pode controlar as ações no momento do acionamento e no momento do desacionamento.

Coloca um serial print dentro do IF e imprime o valor de temperatura. É bem possível que a leitura esteja errada.
Você leu a documentação da biblioteca pra conferir se a ligação do sensor está correta?
Tem que ver como a biblioteca entrega o valor lido, acredito que não seja direto em graus celsius e sim de 0 a 255, nesse caso vc teria que fazer uma conversão usando a função map.

Mas a forma mais fácil de descobrir o que está ocorrendo é da forma como falei no início e ir imprimindo mensagens pra ver o que está ocorrendo em cada parte do programa.