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!");
}
Tags:
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 LDRif(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);
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por