Acabei de terminar um projeto de alarme utilizando LDR e laser, acionado via controle remoto, mas não estou conseguindo desligar o alarme via controle. Meu controle possui três botões e todos são utilizados. Alguém pode me ajudar?
Tags:
As respostas para este tópico estão encerradas.
Bom dia EGM,
veja, como seria possível te ajudar sem saber o que você está falando?
Seja um pouco mais "verborrágico".
Descreva seu projeto, anexe desenhos, arquivos, esquemas, etc;
Descreva a operação do projeto;
Detalhe melhor sua dificuldade.
Afinal aqui é um fórum de tecnologia e não um fórum de esoterismo e adivinhações.
RV
Olá amigo, peço desculpa, segue o programa.
#include <RFremote.h>
const char *cmd1 ="0100100110110100110110100100100110110100100110100110110110110100100110110100110100110";
const char *cmd2 ="0100100110110100110110100100100110110100100110100110110110110100100110100100110100110";
const char *cmd3 ="0100100110110100110110100100100110110100100110100110110110110100100100110100110100110";
int ledgeral = 12; // led amarelo
int ledfrente = 11; // led verde
int leddesliga =10; // led Vermelho
int ligageral = 0;
int ligafrente = 0;
int desligageral = 1;
int sensorfrente = 0; // Pino do sensor ldr frente.
int sensorfundos = 1; // Pino do sensor ldr fundos.
int valsenfrente = 0; // Valor do sensor ldr da frente.
int valsenfundos = 0; // Valor do sensor ldr da fundos.
int buzzer = 4; // Pino do som.
int laserfrente = 8; // Pino do lazer da frente.
int laserfundos = 3; // Pino do lazer dos fundos.
int rele = 5;//Pino do rele.
RFrecv rfrecv;
void setup()
{
Serial.begin(9600);
pinMode(ledgeral, OUTPUT);
pinMode(ledfrente, OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(laserfrente, OUTPUT);
pinMode(leddesliga, OUTPUT);
pinMode(laserfundos, OUTPUT);
pinMode(rele, OUTPUT);
rfrecv.begin();
digitalWrite (leddesliga, HIGH); // liga o led vermelho
digitalWrite(rele, HIGH); // ativa o rele e fecha a selenoide
//digitalWrite(laserfrente, HIGH);
//digitalWrite(laserfundos, HIGH);
}
void loop()
{
valsenfrente = analogRead(sensorfrente);
valsenfundos = analogRead(sensorfundos);
//Serial.println(valsenfrente);
//Serial.println(valsenfundos);
//delay(300);
if (rfrecv.available())
{
if (strncmp((char*)rfrecv.cmd, cmd1, CMD_SIZE) == 0 && desligageral==1)
{
ligageral=0;
ligafrente=0;
desliga();
return;
}
if (strncmp((char*)rfrecv.cmd, cmd2, CMD_SIZE) == 0 && ligageral ==0)
{
ligageral=1;
desligageral=1;
liga(); //Liga alarme geral
return;
}
if (strncmp((char*)rfrecv.cmd, cmd3, CMD_SIZE) == 0 && ligafrente ==0)
{
ligafrente=1;
desligageral=1;
liga(); //Liga alarme frente.
return;
}
}
if(valsenfrente < 400 && ligageral == 1)// padrão400
{
sirene();
}
if(valsenfundos < 300 && ligageral == 1)
{
sirene();
}
if(valsenfrente < 650 && ligafrente == 1)
{
for(int x=0;x<80;x++)
{
tone(buzzer,440,1000);
delay(100);
}
}
}
void liga()
{
if(ligageral==1 && ligafrente==0)
{
digitalWrite(rele,LOW);
delay(100);
digitalWrite(rele,HIGH);
digitalWrite (leddesliga,LOW);
digitalWrite (ledgeral, HIGH);
digitalWrite(laserfrente, HIGH);
digitalWrite(laserfundos, HIGH);
}
if(ligafrente==1 && ligageral==0)
{
digitalWrite (leddesliga,LOW);
digitalWrite (ledfrente,HIGH);
digitalWrite(laserfrente,HIGH);
}
delay(100);
valsenfrente = analogRead(sensorfrente);
valsenfundos = analogRead(sensorfundos);
}
void desliga()
{
if(desligageral=1)
{
digitalWrite (ledgeral, LOW);
digitalWrite (ledfrente, LOW);
digitalWrite (leddesliga, HIGH);
digitalWrite(laserfrente, LOW);
digitalWrite(laserfundos, LOW);
digitalWrite(rele,LOW);
delay(100);
digitalWrite(rele,HIGH);
}
}
void sirene()
{
int var =0;
while(var<150)
{
digitalWrite(rele, LOW); //Ativa sirene.
if(valsenfrente > 300 && valsenfundos > 300)
{
delay(50000);
digitalWrite(rele,HIGH); // Desliga sirene.
break;
}
var ++;
}
}
Já resolvi. Obrigado.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por