domingo - 09 / novembro / 2025

Tutorial de Arduino (Parte 8, Controle remoto IR), 2ª edição

Mais um tutorial de Arduino. Desta vez será explicado como controlar dispositivos com um controle remoto IR (infravermelho). O funcionamento do controle IR será assunto para outro post.

Segunda edição

Eu fiz uns testes e encontrei erros no códigos apresentados neste post. Esta segunda edição substitui os algoritmos com erros por outros que já foram testados e funcionam.

Ligações

Primeiro temos que ligar o módulo receptor no Arduino.

 

 

O pino ao lado do sinal “-” é o terra, o pino do meio é para os 5V e o pino ao lado do “S” é o que recebe o sinal IR. O pino do sinal deve ser ligado a uma entrada digital.

 

 

Aqui o receptor está ligado ao pino digital 7.
O controle remoto para enviar sinais IR.

Adicionando nova biblioteca

Antes de escrever o algoritmo, é necessário baixar uma biblioteca chamada “IRremote.h”. Na janela do Arduino, clique em “Tools(Ferramentas) -> Manage Libraries … (Gerenciar bibliotecas …)”

Este menu deve aparecer no lado esquerdo da janela do Arduino.
Escreva “IRremote” na barra acima de “Type” e a biblioteca IRremote.h é a primeira opção, clique em “INSTALL”.

Algoritmo e novos comandos

Este é o algoritmo que testa o controle remoto IR.

#include <IRremote.h>

#define IR_RECEIVE_PIN 7

void setup() {
  Serial.begin(9600);
  IrReceiver.begin(IR_RECEIVE_PIN);
}
void loop() {
  if (IrReceiver.decode()) {
    IrReceiver.resume();
    Serial.println(IrReceiver.decodedIRData.command);
  }
}

A tela serial deve aparecer como mostra abaixo. Deve aparecer um número diferente para cada botão apertado no controle remoto.

Os novos comandos. Este define o pino dos dados do receptor IR.

#define IR_RECEIVE_PIN 7

A inicialização do receptor.

IrReceiver.begin(IR_RECEIVE_PIN);

Verifica se está recebendo sinal IR (IrReceiver.decode()). Se sim, o Arduino lê os dados (IrReceiver.resume();) e imprime o valor decodificado (Serial.println(IrReceiver.decodedIRData.command);).

if (IrReceiver.decode()) {
    IrReceiver.resume();
    Serial.println(IrReceiver.decodedIRData.command);
  }

Alguns projetos

Este projeto controla um LED RGB e um buzzer com controle remoto IR. Aqui mostra o LED RGB e o buzzer ligados no Arduino.

O circuito completo. O terminal do receptor IR fica no mesmo pino do exemplo anterior.

Este é o algoritmo completo.

#include <IRremote.h>

#define IR_RECEIVE_PIN 7

int RGB_red=8;
int RGB_blue=9;
int RGB_green=10;
int buzzer=11;

void setup() {
  Serial.begin(9600);
  pinMode(RGB_red,OUTPUT);
  pinMode(RGB_blue,OUTPUT);
  pinMode(RGB_green,OUTPUT);
  IrReceiver.begin(IR_RECEIVE_PIN);
  digitalWrite(RGB_red,HIGH);
  digitalWrite(RGB_blue,HIGH);
  digitalWrite(RGB_green,HIGH);
}
void loop() {
  if (IrReceiver.decode()) {
    IrReceiver.resume();
    Serial.println(IrReceiver.decodedIRData.command);
  }
  if(IrReceiver.decodedIRData.command==22){ //Pressionou a tecla 1?
    digitalWrite(RGB_red,LOW);
    digitalWrite(RGB_blue,HIGH);
    digitalWrite(RGB_green,HIGH);
  }
  if(IrReceiver.decodedIRData.command==25){ //Pressionou a tecla 2?
    digitalWrite(RGB_red,HIGH);
    digitalWrite(RGB_blue,LOW);
    digitalWrite(RGB_green,HIGH);
  }
  if(IrReceiver.decodedIRData.command==13){ //Pressionou a tecla 3?
    digitalWrite(RGB_red,HIGH);
    digitalWrite(RGB_blue,HIGH);
    digitalWrite(RGB_green,LOW);
  }
  if(IrReceiver.decodedIRData.command==12){ //Pressionou a tecla 4?
    digitalWrite(RGB_red,LOW);
    digitalWrite(RGB_blue,HIGH);
    digitalWrite(RGB_green,LOW);
  }
  if(IrReceiver.decodedIRData.command==24){ //Pressionou a tecla 5?
    digitalWrite(RGB_red,HIGH);
    digitalWrite(RGB_blue,LOW);
    digitalWrite(RGB_green,LOW);
  }
  if(IrReceiver.decodedIRData.command==94){ //Pressionou a tecla 6?
    digitalWrite(RGB_red,LOW);
    digitalWrite(RGB_blue,LOW);
    digitalWrite(RGB_green,HIGH);
  }
  if(IrReceiver.decodedIRData.command==64){ //Liga o buzzer se pressionar a tecla //OK.
    digitalWrite(buzzer,HIGH);
  }else{                         //Se pressionar qualquer outra tecla, o buzzer //desliga.
    digitalWrite(buzzer,LOW);
  }
}

Apertando as teclas 1,2 ou 3, o LED acende em uma das cores primárias. Ao apertar 4, 5 ou 6 pode-se acender duas cores, outras teclas podem ser adicionadas. O próximo projeto é um braço robótico com três servomotores controlado por IR. Este é o braço montado.

Este é o algoritmo.

#include <Servo.h>
#include <IRremote.h>

#define IR_RECEIVE_PIN 7

Servo servobase;
Servo servotower;
Servo servohand;

void setup() {
  Serial.begin(9600);
  IrReceiver.begin(IR_RECEIVE_PIN);
  servobase.attach(9);
  servotower.attach(10);
  servohand.attach(6);
}

void loop() {
  if (IrReceiver.decode()) {
    IrReceiver.resume();
    Serial.println(IrReceiver.decodedIRData.command);
  }
  if(IrReceiver.decodedIRData.command==22){
    servobase.write(100);
  }
  if(IrReceiver.decodedIRData.command==12){
    servobase.write(10);
  }
  if(IrReceiver.decodedIRData.command==25){
    servotower.write(10);
  }
  if(IrReceiver.decodedIRData.command==24){
    servotower.write(100);
  }
  if(IrReceiver.decodedIRData.command==13){
    servohand.write(100);
  }
  if(IrReceiver.decodedIRData.command==94){
    servohand.write(10);
  }
}

Este vídeo mostra o braço robótico em funcionamento.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisement -

Últimos posts