Como interromper um alarme utilizando um controle remoto?

         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?

Exibições: 291

As respostas para este tópico estão encerradas.

Respostas a este tópico

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.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço