Ir ao conteúdo

Posts recomendados

Postado

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!

  • Membro VIP
Postado

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

Postado
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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!