Ir ao conteúdo
  • Cadastre-se

Outro exibir a temperatura no LCD e quando a temperatura fosse menor que 35º


Posts recomendados

O código deveria exibir a temperatura no LCD e quando a temperatura fosse menor que 35º deveria ligar a porta normalmente aberta do relé, só que a temperatura está oscilando e o relé não está sendo ligado na hora correta, o código que estamos usando é o seguinte:

#include <LiquidCrystal.h> // Inclui a biblioteca para utilizar o LCD.

#define sensor 0 // Define o pino A0 como “sensor”

int Ventrada; // Variável para ler o sinal do pino do Arduino

float Temperatura; // Variável que recebe o valor convertido para temperatura.

const int RelePin = 9; // pino ao qual o Módulo Relé está conectado

int incomingByte; // variavel para ler dados recebidos pela serial

LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

/* Esta função acima declara quais os pinos do Arduino serão utilizados para o controle do LCD */

void setup()

{

lcd.begin(16, 2); // Diz para o Arduino que o display é 16x2.

lcd.print("Temperatura: "); // Manda o texto para a tela do display

Serial.begin(9600); // inicializa a comunicação serial em 9600bps

pinMode(RelePin, OUTPUT); // seta o pino como saída

}

void loop()

{

Ventrada = analogRead (sensor); /* Manda o Arduino ler o pino e armazena

o valor em “Ventrada”. */

Temperatura=(500*Ventrada)/1023; /* Converte o valor de tensão em

temperatura e armazena na variável “Temperatura” */

lcd.setCursor(0, 1); // Move o cursor do display para a segunda linha.

lcd.print(Temperatura); // Exibe o valor de temperatura no display.

lcd.print(" C"); // Escreve “C” para dizer que a escala é Celsius.

delay(1000); /* Aguarda 1 segundo para efetuar uma nova leitura de

temperatura. */

if (Serial.available() > 0) 
// verifica se tem algum dado na serial
incomingByte = Serial.read(); //lê o primeiro dado do buffer da serial

if (Temperatura <= 35) //se temperatura for menor que 35 
digitalWrite(RelePin, HIGH); //aciona o pino

if (Temperatura >= 35) //se for maior
digitalWrite(RelePin, LOW); //desativa o pino

}

se possível, gostaria de saber o erro do código!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Publique o esquema para uma ajuda nível 'hard'.

Sobre isso...

Em 17/12/2018 às 16:25, Napa Nose disse:

if (Temperatura <= 35) //se temperatura for menor que 35 

digitalWrite(RelePin, HIGH); //aciona o pino

if (Temperatura >= 35) //se for maior

digitalWrite(RelePin, LOW); //desativa o pino

... e se temperatura=35 o que acontece?.. reflita, entenda e deduza a solução...

palavra dica: histerese

Link para o comentário
Compartilhar em outros sites

Em 17/12/2018 às 15:25, Napa Nose disse:

if (Temperatura <= 35) //se temperatura for menor que 35  digitalWrite(RelePin, HIGH); //aciona o pino 
if (Temperatura >= 35) //se for maior digitalWrite(RelePin, LOW); //desativa o pino

 

Tem um erro de lógica nesta parte, especificamente quando a temperatura for exatamente 35. Assim fica melhor, eu acho:

if (Temperatura < 35) digitalWrite(RelePin, HIGH) 
else digitalWrite(RelePin, LOW); 

Mas não sei se isto é a causa do erro...🤔

  • Triste 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...