sábado, 10 de agosto de 2013

Acender Lâmpada com Arduino e Controle Infavermelho


     Esta página irá ensinar a como motar um circuito capaz de acender uma lâmpada com um controle emissor de infravermelho (controle de televisão, dvd, recptor de parabólica, controle de rádio de carro, etc) utilizando o microcontrolador arduino.. Para isso será necessário o seguinte material:
-Arduino (no caso utilizei o UNO)
-2 Resistores 330 Ω
-1 Módulo Relé 5V para arduino
-1 Receptor infravermelho
-1 Bateria 9V (para alimentar o arduino)
-1 Cabo para alimentar o arduino atravéz da bateria
-1 Bocal lâmpada
-1 Lâmpada 127 V
-Fios

    O esquemático da ligação segue abaixo:
      O vídeo mostrando o resultado do projeto está mostrado abaixo:



      O código para a programação do arduino segue abaixo:

#include <IRremote.h>
#include <IRremoteInt.h>

int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;

#define BT_LIGA 0xFFA25D  //Botao Liga

#define Controle_Rele 7   //Controla Relé

int Controle_Rele_State = LOW;  //Relé começa fechado

long bt = 0; //Ultimo botao precionado
unsigned long startMilis = 0; //Contado para blink sem delay

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();

  pinMode(Controle_Rele, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    irrecv.resume();

    Serial.println(results.value, HEX); //Aqui voce descobre qual o botao do seu controle

    //Apenas para filtrar os botoes apertados, no meu caso para filtrar outros controles =)
    if(results.value == BT_LIGA)
    {
      startMilis = millis(); //Apertou um botao, reseta o contador
      bt = results.value; //Salva ultimo botao apertado
      mod(1);
    }
  }


}

void mod(int x)
{
  unsigned long currentMillis = millis();

  if(x == 1)
  {
   Controle_Rele_State=!Controle_Rele_State;
   
   digitalWrite(Controle_Rele, Controle_Rele_State);
  }
  
}

9 comentários:

  1. qual é a marca do controle que você usou??????

    ResponderExcluir
  2. Ola! quando eu compilo o codigo da varios erros.

    acende_lampada:5: error: 'IRrecv' does not name a type
    acende_lampada:6: error: 'decode_results' does not name a type
    acende_lampada.ino: In function 'void setup()':
    acende_lampada:20: error: 'irrecv' was not declared in this scope
    acende_lampada.ino: In function 'void loop()':
    acende_lampada:26: error: 'irrecv' was not declared in this scope
    acende_lampada:26: error: 'results' was not declared in this scope

    ResponderExcluir
  3. acende_lampada:5: error: 'IRrecv' does not name a type
    acende_lampada:6: error: 'decode_results' does not name a type
    acende_lampada.ino: In function 'void setup()':
    acende_lampada:20: error: 'irrecv' was not declared in this scope
    acende_lampada.ino: In function 'void loop()':
    acende_lampada:26: error: 'irrecv' was not declared in this scope
    acende_lampada:26: error: 'results' was not declared in this scope

    ResponderExcluir
  4. Usei um controle de rádio de carro. Qualquer um serve.
    Esses erros que estão dando são provalmente pq vc não instalou a biblioteca do infravermelho corretamente.
    Você deve baixar e instalar a biblioteca IRremote.
    Eu baixei em: http://labduino.blogspot.com.br/2012/09/estava-testando-um-modulo-e-controle.html
    Baixei a versão para o arduino 1.0.1.
    Veja aí se isto resolve seu problema.

    ResponderExcluir
  5. Valeu! resolvido muito obrigado pela ajuda!

    ResponderExcluir
  6. cara se eu fosse usar um relé de 4 canais de 6 terminais , como ficaria o esquema ?
    desde já obrigado "!

    ResponderExcluir
    Respostas
    1. Não entendi como é este relé.
      Entenda que os relés funcionam da seguinte forma: são chaves que abrem ou fecham dependendo da passagem de corrente nas portas de controle.
      Me manda o modelo do seu relé pra eu dar uma olhada.

      Excluir
  7. o meu deu o erro:IRremote\IRremote.cpp.o: In function `MATCH(int, int)':
    /IRremoteInt.h:176: multiple definition of `MATCH(int, int)'
    sketch_sep09a.cpp.o:C:\Users\Pelicioni\Documents\Arduino\libraries\IRremote/IRremoteInt.h:176: first defined here
    IRremote\IRremote.cpp.o: In function `MATCH_MARK(int, int)':
    /IRremoteInt.h:177: multiple definition of `MATCH_MARK(int, int)'
    sketch_sep09a.cpp.o:C:\Users\Pelicioni\Documents\Arduino\libraries\IRremote/IRremoteInt.h:177: first defined here
    IRremote\IRremote.cpp.o: In function `MATCH_SPACE(int, int)':
    /IRremoteInt.h:178: multiple definition of `MATCH_SPACE(int, int)'
    sketch_sep09a.cpp.o:C:\Users\Pelicioni\Documents\Arduino\libraries\IRremote/IRremoteInt.h:178: first defined here

    ResponderExcluir
    Respostas
    1. Você baixou a biblioteca do site: http://labduino.blogspot.com.br/2012/09/estava-testando-um-modulo-e-controle.html ?
      Tenta baixar essa biblioteca e veja se resolve seu problema.

      Excluir