Boa noite galera, sou iniciante aqui no laborátorio e estou tentando juntar duas bibliotecas que encontrei que seria a Liquid Crystal  com uma do tutorial que encontrei aqui como utilizar a mini fotocelula (http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-a-min...).

Bom resolvi juntar as duas mas quando junto o modulo rele fica doidão acendendo e apagando sem parar oque vocês acham que pode ser ?? Obrigado por tudo.

#define LAMP 13 //Define o LAMP como 13
#include <LiquidCrystal.h> //Ativa biblioteca LCD
/** Inicializar LCD */
LiquidCrystal lcd(12,11,5,4,3,2);
int RelePin13 = 13;
int LDR; //Variável para a leitura do LDR
int cont; //Variável utilizada para armazenar os valores lidos pelo sensor
int i; //Variável para contagem

void setup()
{
pinMode(LAMP,OUTPUT); //Define o pino D8 como saída
Serial.begin(9600); //Inicia a serial
lcd.begin(16,2);
lcd.clear();
/** Colocar o cursor do LCD na coluna 0 e linha 0 */
lcd.setCursor(0,0);
lcd.print(": STATUS RELE :");
}
void loop()
{
LDR=0; //Zera a variável LDR
for(i=0;i<=10;i++) //Faz 10 vezes a leitura do sensor
{
cont=analogRead(A0); //Lê o valor do sensor (LDR ligado ao pino A0) e guarda na variável LDR
LDR = LDR+cont; //Armazenamento na varíavel LDR o valor lido + o valor anterior
delay(10); //Delay se 10 milissegundos
}
LDR=LDR/10; //Divide o valor armazenado por 10
Serial.println(LDR); //Imprime o valor do LDR

(LDR >= 400) ? (digitalWrite(LAMP,LOW)) : (digitalWrite(LAMP,HIGH));
//Se o valor lido (luminosidade) for maior ou igual a 400, liga a lâmpada, senão desliga a lâmpada
lcd.clear();
digitalWrite(LAMP, HIGH);
lcd.setCursor(0,1);
lcd.print("Rele ligado!");
lcd.clear();
digitalWrite(LAMP, LOW);
lcd.setCursor(0,1);
lcd.print("Rele Desligago!");

}

Exibições: 759

Responder esta

Respostas a este tópico

Faltou um "delay" ai no meio Rosimar,

Experimenta isto:

digitalWrite(LAMP, HIGH);

delay(1000);
lcd.setCursor(0,1);
lcd.print("Rele ligado!");
lcd.clear();
digitalWrite(LAMP, LOW);

delay(1000);
lcd.setCursor(0,1);
lcd.print("Rele Desligago!");

}

Coloco o delay ai ele fica acendendo e apagando apos o delay não o bedece o sensor ldr

E use o IF e ELSE, porque do jeito que está, vai apagar e desligar direto.

como coloco o IF e o ELSE ?

Testa isto:

if(LDR >= 400) {

(digitalWrite(LAMP,LOW));

delay(1000);

}

else {

(digitalWrite(LAMP,HIGH));

delay(1000);

}

//Se o valor lido (luminosidade) for maior ou igual a 400, liga a lâmpada, senão desliga a lâmpada
lcd.clear();
digitalWrite(LAMP, HIGH);
lcd.setCursor(0,1);
lcd.print("Rele ligado!");
lcd.clear();
digitalWrite(LAMP, LOW);
lcd.setCursor(0,1);
lcd.print("Rele Desligago!");

Não deu certo agora ta piscando com delay de 1000

Veja se o valor 400 está bom pro seu projeto, se nao precisa deixar com valor menor/maior.

o valor esta correto mais  tem alguma coisa fazendo o rele ficar piscando não é o ldr fica tipo mando pulso sem parar não deixa o rele ficar ligado direto intendeu

No início do código, declare os seus pinos que comandam o relé, em valor BAIXO.

Por exemplo:

pinMode(13, OUTPUT);

digitalWrite(13, LOW);  // resistor de pullDown

#define LAMP 13 //Define o LAMP como 13
#include <LiquidCrystal.h> //Ativa biblioteca LCD
/** Inicializar LCD */
LiquidCrystal lcd(12,11,5,4,3,2);
int LDR; //Variável para a leitura do LDR
int cont; //Variável utilizada para armazenar os valores lidos pelo sensor
int i; //Variável para contagem

void setup()
{
pinMode(LAMP, OUTPUT);; //Define o pino D13 como saída
digitalWrite(LAMP, LOW); // resistor de pullDown
Serial.begin(9600); //Inicia a serial
lcd.begin(16,2);
lcd.clear();
/** Colocar o cursor do LCD na coluna 0 e linha 0 */
lcd.setCursor(0,0);
lcd.print(": STATUS RELE :");
delay(2800);
}
void loop()
{
LDR=0; //Zera a variável LDR
for(i=0;i<=10;i++) //Faz 10 vezes a leitura do sensor
{
cont=analogRead(A0); //Lê o valor do sensor (LDR ligado ao pino A0) e guarda na variável LDR
LDR = LDR+cont;
delay(10); //Armazenamento na varíavel LDR o valor lido + o valor anterior

}
LDR=LDR/10; //Divide o valor armazenado por 10
Serial.println(LDR); //Imprime o valor do LDR

(LDR >= 400) ? (digitalWrite(LAMP,LOW)) : (digitalWrite(LAMP,HIGH));
//Se o valor lido (luminosidade) for maior ou igual a 400, liga a lâmpada, senão desliga a lâmpada
lcd.clear();
digitalWrite(LAMP, HIGH);
lcd.setCursor(0,1);
lcd.print("Rele ligado!");
lcd.clear();
digitalWrite(LAMP, LOW);
lcd.setCursor(0,1);
lcd.print("Rele Desligado!");
if(LDR >= 400) {
(digitalWrite(LAMP,LOW));
}
else {
(digitalWrite(LAMP,HIGH));
}

//Se o valor lido (luminosidade) for maior ou igual a 400, liga a lâmpada, senão desliga a lâmpada
}

#define LAMP 13 //Define o LAMP como 13
#include <LiquidCrystal.h> //Ativa biblioteca LCD
/** Inicializar LCD */
LiquidCrystal lcd(12,11,5,4,3,2);
int LDR; //Variável para a leitura do LDR
int cont; //Variável utilizada para armazenar os valores lidos pelo sensor
int i; //Variável para contagem
void setup()
{
pinMode(LAMP, OUTPUT);; //Define o pino D13 como saída
digitalWrite(LAMP, LOW); // resistor de pullDown
Serial.begin(9600); //Inicia a serial
lcd.begin(16,2);
lcd.clear();
/** Colocar o cursor do LCD na coluna 0 e linha 0 */
lcd.setCursor(0,0);
lcd.print(": STATUS RELE :");
delay(2800);
}
void loop()
{
LDR=0; //Zera a variável LDR
for(i=0;i<=10;i++) //Faz 10 vezes a leitura do sensor
{
cont=analogRead(A0); //Lê o valor do sensor (LDR ligado ao pino A0) e guarda na variável LDR
LDR = LDR+cont;
delay(10); //Armazenamento na varíavel LDR o valor lido + o valor anterior
}
LDR=LDR/10; //Divide o valor armazenado por 10
Serial.println(LDR); //Imprime o valor do LDR

if(LDR >= 400) {
(digitalWrite(LAMP,LOW));
}
else {
(digitalWrite(LAMP,HIGH));
}
//Se o valor lido (luminosidade) for maior ou igual a 400, liga a lâmpada, senão desliga a lâmpada
}

Galera está aqui o esquema depois de pronto, graças a ajuda do Andre Andrade ficou show de bola, o visor lcd infora o status do rele.

#define LAMP 13 //Define o LAMP como 13
#include <LiquidCrystal.h> //Ativa biblioteca LCD
/** Inicializar LCD */
LiquidCrystal lcd(12,11,5,4,3,2);
int LDR; //Variável para a leitura do LDR
int cont; //Variável utilizada para armazenar os valores lidos pelo sensor
int i; //Variável para contagem

void setup()
{
pinMode(LAMP, OUTPUT);; //Define o pino D13 como saída
digitalWrite(LAMP, LOW); // resistor de pullDown
Serial.begin(9600); //Inicia a serial
lcd.begin(16,2);
lcd.clear();
/** Colocar o cursor do LCD na coluna 0 e linha 0 */
lcd.setCursor(0,0);
lcd.print("ROSIMAR FREITAS");
delay(2800);

}
void loop()
{
LDR=0; //Zera a variável LDR
for(i=0;i<=10;i++) //Faz 10 vezes a leitura do sensor
{
cont=analogRead(A0); //Lê o valor do sensor (LDR ligado ao pino A0) e guarda na variável LDR
LDR = LDR+cont;
delay(10); //Armazenamento na varíavel LDR o valor lido + o valor anterior

}
LDR=LDR/10; //Divide o valor armazenado por 10
Serial.println(LDR); //Imprime o valor do LDR

(LDR >= 400) ? (digitalWrite(LAMP,LOW)) : (digitalWrite(LAMP,HIGH));
//Se o valor lido (luminosidade) for maior ou igual a 400, liga a lâmpada, senão desliga a lâmpada

if(LDR >= 400) {
(digitalWrite(LAMP,LOW));
lcd.clear();
lcd.setCursor(0,0);
lcd.print(": STATUS RELE :");
lcd.setCursor(0,1);
lcd.print("RELE DESLIGADO");// INFORMA SITUAÇÃO DO RELE NA LCD
delay(1000);

}
else {
(digitalWrite(LAMP,HIGH));
lcd.clear();
lcd.setCursor(0,0);
lcd.print(": STATUS RELE :");//escreve no visor lcd
lcd.setCursor(0,1);
lcd.print("RELE LIGADO!"); // INFORMA SITUAÇÃO DO RELE NO VISOR LCD
delay(1000);
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço