Menu

Módulo controle remoto

Podemos utilizar um controle remoto infravermelho a partir do uso de um módulo ou um sensor capaz de receber e decodificar os sinais enviados pelo controle. Qualquer controle infravermelho pode ser utilizado (alguns módulos são universais, outros possuem limitações).

Quando for utiliza o módulo de controle de motores, ficará assim (ajuste o código):

 

Um código que pode ser utilizado é o que segue:

#include "IRremote.h"

int pinoControle = 6;
//define pinoControle A0   //para quando for utilizar com o módulo de motores

IRrecv receptor(pinoControle);

decode_results resultados;

void setup()
{
  Serial.begin(9600);
  receptor.enableIRIn();
}

void loop() {
  if (receptor.decode(&resultados)) {
   Serial.println(resultados.value, HEX);
   receptor.resume(); // próximo valor
  }
}

Note que no código foi utilizado  o pino 6, em correspondência à ligação de hardware apresentada; se você usou outra porta, ajuste o código.

Você pode usar este código para testar o controle e verificar os códigos gerados.

Você terá uma saída mostrando os códigos para cada tecla (do controle que em geral vem com o sensor) – de um controle para outro varia (em alguns casos a biblioteca não consegue decodificar e você não verá nada):

/* Códigos Controle Senhorinha:

Repetição FFFFFFFF

Seta_para_Cima FF18E7

Seta_paraEsquerda FF10EF

Seta_paraDireita FF5AA5

Seta_para_Baixo FF4AB5

OK FF38C7

Tecla * FF6897

Tecla # FFB04F

Tecla 0 FFFFFFFF

Tecla 1 FFA25D

Tecla 2 FF629D

Tecla 3 FFE21D

Tecla 4 FF22DD

Tecla 5 FF02FD

Tecla 6 FFC23D

Tecla 7 FFE01F

Tecla 8 FFA857

Tecla 9 FF906F

*/

Para ler e mostrar a tecla:

/*
Códigos utilizados - verifique se seu controle é igual
Repetição FFFFFFFF
Liga/Desliga 1FE48B7
A 1FE807F
B 1FE40BF
C 1FEC03F
D 1FE20DF
E 1FE609F
Seta_para_Cima 1FEA05F
Seta_paraEsquerda 1FEE01F
Seta_paraDireita 1FE906F
Seta_para_Baixo 1FED827
OK 1FE10EF
Voltar 1FE50AF
Volume+ 1FEF807
Volume- 1FE708F
Tocar/pausa 1FE30CF
SemSom 1FEB04F
*/

#include "IRremote.h"

int pinoControle = 6;

IRrecv receptor(pinoControle);

decode_results resultados;

void setup()
{
  Serial.begin(9600);
  receptor.enableIRIn();
}

void loop() {
  if (receptor.decode(&resultados)) {
   switch (resultados.value){
    case 0x1FE48B7:
     Serial.println("Tecla Liga/ desliga");
     break;
    case 0x1FE807F:
     Serial.println("Tecla A");
     break;
    case 0x1FE40BF:
     Serial.println("Tecla B");
     break; 
    case 0x1FEC03F:
     Serial.println("Tecla C");
     break;
    case 0x1FE20DF:
     Serial.println("Tecla D");
     break; 
    case 0x1FE609F:
     Serial.println("Tecla E");
     break; 
    case 0x1FEA05F:
     Serial.println("Tecla Seta para cima");
     break;
    case 0x1FEE01F:
     Serial.println("Tecla Seta para esquerda");
     break; 
    case 0x1FE906F:
     Serial.println("Tecla Seta para direita");
     break;
    case 0x1FED827:
     Serial.println("Tecla Seta para baixo");
     break; 
    case 0x1FE10EF:
     Serial.println("Tecla OK");
     break; 
    case 0x1FE50AF:
     Serial.println("Tecla Voltar");
     break;
    case 0x1FEF807:
     Serial.println("Tecla Volume +");
     break; 
    case 0x1FE708F:
     Serial.println("Tecla Volume -");
     break;
    case 0x1FE30CF:
     Serial.println("Tecla Tocar/ pausa");
     break; 
    case 0x1FEB04F:
     Serial.println("Tecla Desligar o som");
     break; 
    }
   receptor.resume(); // próximo valor
  }
}

Para ler controlando a repetição:

#include "IRremote.h"

int pinoControle = 6;

IRrecv receptor(pinoControle);

decode_results resultados;

byte tecla;

void setup()
{
  Serial.begin(9600);
  receptor.enableIRIn();
}

void loop() {
  if (receptor.decode(&resultados)) {
   if(resultados.value != 0xFFFFFFFF){
    tecla = resultados.value;
   }
  switch (tecla){
   case 0x1FE48B7:
    Serial.println("Tecla Liga/ desliga");
    break;
   case 0x1FE807F:
    Serial.println("Tecla A");
    break;
   case 0x1FE40BF:
    Serial.println("Tecla B");
    break; 
   case 0x1FEC03F:
    Serial.println("Tecla C");
    break;
   case 0x1FE20DF:
    Serial.println("Tecla D");
    break; 
   case 0x1FE609F:
    Serial.println("Tecla E");
    break; 
   case 0x1FEA05F:
    Serial.println("Tecla Seta para cima");
    break;
   case 0x1FEE01F:
    Serial.println("Tecla Seta para esquerda");
    break; 
   case 0x1FE906F:
    Serial.println("Tecla Seta para direita");
    break;
   case 0x1FED827:
    Serial.println("Tecla Seta para baixo");
    break; 
   case 0x1FE10EF:
    Serial.println("Tecla OK");
    break; 
   case 0x1FE50AF:
    Serial.println("Tecla Voltar");
    break;
   case 0x1FEF807:
    Serial.println("Tecla Volume +");
    break; 
   case 0x1FE708F:
    Serial.println("Tecla Volume -");
    break;
   case 0x1FE30CF:
    Serial.println("Tecla Tocar/ pausa");
    break; 
   case 0x1FEB04F:
    Serial.println("Tecla Desligar o som");
    break; 
   }
  receptor.resume(); // próximo valor
 }
}

 

Baixe aqui (  controleRemoto ) os códigos para você usar.

Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420
Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420

UFPR nas Redes Sociais


UFPR nas Redes Sociais