Ir ao conteúdo
  • Cadastre-se

Controle Remoto Clone Arduino


MicSG

Posts recomendados

  • Membro VIP

Olá. - De Novo😅 -

Montei o projeto do vídeo do meu ultimo tópico: 'Emitir sinal hexadecimal emissor IR arduino'  link:https://www.clubedohardware.com.br/forums/topic/1456878-emitir-sinal-hexadecimal-emissor-ir-arduino/?do=findComment&comment=7819680

 

Deu tudo certo: o arduino controla a minha TV. 

Agora eu queria que eu apertasse um botão de outro controle remoto(não é da TV) para o arduino, o arduino recepcionasse e enviasse para o LED Infravermelho um determinado código.

O código que eu usei foi esse:

// INCLUSÃO DE BIBLIOTECA
#include <IRremote.h>
#include <PushButton.h>

// DIRETIVAS DE COMPILAÇÃO
#define tempoTecla 350
#define frequencia 38 // kHz

// DEFINIÇÃO DOS PINOS
#define pinReceptor 11
#define pinBot1 8
#define pinLed 12

// INSTANCIANDO OBJETOS
IRrecv receptorIR(pinReceptor);
IRsend emissorIR;
PushButton botaoLeitura(pinBot1);

// DECLARAÇÃO VARIÁVEIS GLOBAIS
bool lerComando = false;

// DECLARAÇÃO DAS FUNÇÕES DE LEITURA

void ircode   (decode_results *results);
void encoding (decode_results *results);
void dumpInfo (decode_results *results);
void dumpRaw  (decode_results *results);
void dumpCode (decode_results *results);

//  DECLARAÇÃO DAS TECLAS CLONADAS

unsigned int teclaD[] = {9050,4400, 650,500, 600,500, 600,500, 650,500, 600,550, 600,450, 650,500, 650,500, 600,1600, 600,1650, 600,1550, 650,1600, 600,1600, 650,1600, 600,1600, 600,1600, 600,550, 600,1600, 600,1600, 600,1600, 650,500, 600,500, 650,500, 600,500, 600,1600, 650,500, 600,500, 650,500, 600,1600, 600,1600, 650,1550, 650,1600, 600};
unsigned int teclaJ[] = {9050,4350, 650,450, 700,450, 650,500, 650,450, 650,450, 700,450, 650,450, 700,450, 650,1550, 650,1550, 700,1500, 700,1550, 650,1550, 700,1500, 700,1550, 650,1550, 700,400, 700,1550, 650,1550, 700,400, 700,450, 700,400, 700,450, 650,450, 700,1500, 700,450, 700,400, 700,1550, 650,1550, 700,1500, 700,1500, 700,1550, 700};
unsigned int teclaL[] = {9000,4450, 550,550, 600,500, 600,550, 600,550, 550,550, 600,500, 600,550, 600,550, 550,1600, 650,1600, 600,1550, 650,1550, 700,1550, 650,1600, 650,1550, 650,1550, 650,500, 650,1550, 650,500, 600,1600, 600,1600, 600,500, 650,1600, 600,500, 600,1650, 550,550, 600,1650, 550,550, 600,500, 600,1650, 550,550, 600,1600, 600};
unsigned int teclaN[] = {9000,4450, 600,550, 550,600, 550,550, 550,600, 500,600, 550,600, 500,600, 550,600, 500,1700, 550,1650, 550,1650, 550,1700, 550,1650, 550,1650, 600,1600, 600,1650, 550,1650, 600,1650, 550,500, 600,1650, 600,1600, 600,500, 650,500, 600,500, 600,550, 600,500, 600,1600, 650,500, 600,500, 600,1600, 650,1600, 600,1600, 600};
unsigned int teclaM[] = {9000,4450, 600,500, 600,500, 600,500, 650,550, 550,500, 650,500, 600,550, 600,500, 600,1600, 600,1600, 650,1600, 600,1600, 600,1600, 650,1550, 650,1600, 600,1600, 650,500, 600,1600, 600,1600, 650,500, 600,1600, 600,500, 650,500, 600,500, 600,1650, 600,450, 650,500, 650,1550, 650,500, 600,1600, 650,1600, 600,1600, 600};


void setup() {
  Serial.begin(9600);
  pinMode(pinLed, OUTPUT);

  // INICIANDO RECEPTOR IR
  receptorIR.enableIRIn();
  Serial.println("Setup Concluído");
  Serial.println("Digite d para informações");
  Serial.println("Digite j para subir canal");
  Serial.println("Digite l para diminuir volume");
  Serial.println("Digite n aumentar volume");
  Serial.println("Digite m para descer canal");
  Serial.println(" ");
  
}

void loop() {
  // MÉTODO PARA LEITURA E ATUALIZAÇÃO DAS PROPRIEDADES DO BOTÃO
  botaoLeitura.button_loop();

  // BLOCO CONDIÇÕES PARA INICIAR LEITURA
  if (botaoLeitura.pressed() && !lerComando) {
    lerComando = true;
    digitalWrite(pinLed, HIGH);
  } else if (botaoLeitura.pressed() && lerComando) {
    lerComando = false;
    digitalWrite(pinLed, LOW);
  }

  // LAÇO PARA LEITURA DO RECEPTOR IR QUANDO FOR PRESSIONADO O BOTÃO
  while (lerComando) {

    decode_results  results;

    if (receptorIR.decode(&results)) {
      ircode   (&results);
      encoding (&results);
      dumpInfo (&results);
      dumpRaw  (&results);
      dumpCode (&results);
      receptorIR.resume();
      lerComando = false;
      digitalWrite(pinLed, LOW);
    }
              
    }
  

  // BLOCO PARA RECEBER DADOS DA SERIAL E INICIAR EMISSOR IR
  
  
  if (Serial.available()) {
    char tecla = Serial.read();

    switch (tecla) {
    
      case 'd':
        emissorIR.sendRaw(teclaD, sizeof(teclaD) / sizeof(teclaD[0]), frequencia);
        Serial.println("Enviando Tecla D clonada");
        delay(tempoTecla);
        break;


      case 'j':
        emissorIR.sendRaw(teclaJ, sizeof(teclaJ) / sizeof(teclaJ[0]), frequencia);
        Serial.println("Enviando Tecla J clonada");
        delay(tempoTecla);
        break;

      

      case 'l':
        emissorIR.sendRaw(teclaL, sizeof(teclaL) / sizeof(teclaL[0]), frequencia);
        Serial.println("Enviando Tecla L clonada");
        delay(tempoTecla);
        break;
        
      case 'n':
        emissorIR.sendRaw(teclaN, sizeof(teclaN) / sizeof(teclaN[0]), frequencia);
        Serial.println("Enviando Tecla N clonada");
        delay(tempoTecla);
        break;

      case 'm':
        emissorIR.sendRaw(teclaM, sizeof(teclaM) / sizeof(teclaM[0]), frequencia);
        Serial.println("Enviando Tecla M clonada");
        delay(tempoTecla);
        break;
  
    }
  }
}

 

Circuito:

647393564_CircuitoCloneControleRemoto.png.59408e226e341ca53df94742180bc729.png

Códigos do Controle que quero usar ( não o controle da TV):

NOTA: Só são necessários 5 botões;

 

Botão POWER

Code      : 2FD807F (32 bits)
unsigned int  rawData[67] = {8900,4450, 550,550, 550,550, 550,550, 550,550, 550,550, 550,550, 550,1700, 550,550, 550,1650, 550,1650, 550,1650, 600,1650, 550,1650, 550,1650, 600,500, 600,1600, 600,1650, 550,550, 550,550, 550,550, 600,500, 550,550, 600,550, 550,550, 550,500, 650,1600, 600,1600, 600,1600, 650,1600, 550,1650, 650,1550, 650,1550, 650};  

Botão MUTE
Code      : 2FD00FF (32 bits)
unsigned int  rawData[67] = {8900,4450, 550,550, 600,500, 600,500, 600,550, 550,500, 600,550, 550,1650, 550,550, 550,1650, 600,1650, 550,1600, 600,1650, 550,1700, 500,1700, 550,550, 550,1650, 550,550, 550,550, 550,550, 600,550, 600,500, 500,600, 550,550, 600,500, 550,1650, 600,1650, 550,1650, 550,1650, 600,1600, 600,1650, 600,1600, 550,1650, 550}; 

 

Botão Menu▲
Code      : 2FD40BF (32 bits)
unsigned int  rawData[67] = {8900,4450, 600,500, 550,600, 550,550, 550,550, 550,550, 550,550, 600,1600, 550,550, 600,1650, 550,1650, 600,1600, 600,1600, 550,1650, 600,1650, 550,500, 600,1650, 550,550, 650,1550, 550,550, 600,500, 650,500, 550,550, 550,550, 650,450, 600,1600, 650,500, 550,1650, 600,1600, 550,1650, 600,1600, 650,1600, 550,1650, 650};  

 

Botão VOL►
Code      : 2FDA05F (32 bits)
unsigned int  rawData[67] = {8900,4450, 550,550, 600,500, 600,500, 600,500, 650,500, 550,500, 600,1650, 600,500, 650,1550, 600,1600, 650,1550, 650,1550, 650,1600, 650,1550, 600,500, 650,1600, 600,1600, 550,550, 600,1600, 600,500, 600,550, 600,450, 650,500, 600,500, 650,450, 600,1600, 650,450, 600,1650, 600,1550, 700,1550, 650,1600, 550,1600, 650};  

 

Botão MENU▼
Code      : 2FD609F (32 bits)
unsigned int  rawData[67] = {9000,4400, 600,500, 550,550, 600,550, 550,550, 550,550, 550,550, 600,1600, 600,500, 550,1650, 600,1650, 550,1650, 550,1650, 600,1600, 600,1600, 600,500, 600,1650, 600,500, 600,1600, 650,1600, 600,450, 650,450, 600,500, 650,500, 600,500, 600,1650, 550,500, 650,450, 650,1600, 600,1600, 600,1600, 600,1600, 650,1600, 600}; 

 

Botão VOL◄
Code      : 2FDC03F (32 bits)
unsigned int  rawData[67] = {8950,4450, 550,500, 600,500, 600,550, 600,450, 600,550, 550,550, 600,1600, 600,550, 550,1600, 650,1600, 600,1600, 600,1600, 650,1550, 650,1600, 550,550, 600,1600, 600,1650, 600,1550, 600,550, 650,450, 600,500, 600,500, 650,450, 600,500, 600,500, 650,500, 600,1600, 600,1600, 600,1650, 550,1650, 600,1550, 600,1650, 600}; 

 

Botão MENU (Central)
Code      : 2FD20DF (32 bits)
unsigned int  rawData[67] = {8950,4450, 550,500, 650,500, 600,500, 550,550, 600,500, 650,450, 600,1600, 650,450, 600,1650, 600,1600, 600,1600, 600,1650, 600,1550, 650,1550, 650,500, 650,1550, 650,450, 600,550, 600,1550, 650,500, 600,500, 600,500, 650,450, 600,500, 650,1600, 600,1600, 600,500, 600,1600, 600,1600, 650,1600, 600,1600, 650,1550, 600}; 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Eder Neumann Isso.

Para se ter 2 controles.

adicionado 0 minutos depois

@Eder Neumann Isso.

Para se ter 2 controles, um da TV e outro para imita-lo.

adicionado 4 minutos depois

@Isadora Ferraz

8 minutos atrás, Isadora Ferraz disse:

mas ... não é só fazer:
 


//...
if (results.value == 0x2FD807F) emissorIR.sendRaw(o_que,você,_quiser);

?

ou algo do gênero...

é que o problema é que o arduino só recepciona dados quando o botão é apertado.

 

Eu coloquei o que você falou

//...
if (results.value == 0x2FD807F) emissorIR.sendRaw(o_que,você,_quiser);

E o compilador mostrou: 

exit status 1
'results' was not declared in this scope

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Amigo... aquilo, como sempre, foi só pra te dar norte. results.value é o resultado da recepção da sua função i.r. que acho que tá láaaa no outro post, lembra? E de fato você deve declará-lo em algum lugar ou ver se alguma função ou #include o declarou pra você. 

 

55 minutos atrás, Michel da Silva Galvão disse:

o arduino só recepciona dados quando o botão é apertado

você deve alterar o fonte pra que ele não espere o botão. É simples mas infelizmente não posso fazer pra você.

Até onde captei, você quer entrar um um controle qualquer e sair com outro, isso? Algo como... seu arduino traduz de uma linguagem pra outra

 

Não lhe posso somar muito + que isso ok?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!