Ir ao conteúdo

Posts recomendados

  • Membro VIP
Postado

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}; 

  • Membro VIP
Postado

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

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

?

ou algo do gênero...

  • Membro VIP
Postado

@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

 

  • Membro VIP
Postado

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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!