Início › Componentes › Infravermelhos
⬤ Avançado

📡 Recetor Infravermelhos (IR)

Usar o comando IR para controlar LEDs e outros dispositivos sem fios.

⏱️ Duração: 45 min
🧩 Componentes: Recetor IR + Comando IR

Como Funciona o IR?

O comando IR emite pulsos de luz infravermelha modulados a 38kHz. Cada botão tem um código único. O recetor desmodula o sinal e envia um sinal digital para o Arduino.

📌 Pinagem do Recetor (vista de frente)

Pino→Arduino
Sinal (esq)→Pino 11
GND (centro)→GND
VCC (dir)→5V

Instalar a Biblioteca IRremote

1

Abrir Gestor de Bibliotecas

No Arduino IDE: Sketch → Incluir Biblioteca → Gerir Bibliotecas

2

Pesquisar IRremote

Escreve "IRremote" na caixa de pesquisa. Seleciona a biblioteca de shirriff ou Arduino-IRremote.

3

Instalar

Clica em Instalar e aguarda. Versão 3.x ou superior recomendada.

Exercício 1 — Descobrir os Códigos dos Botões

Primeiro precisas de saber o código HEX de cada botão do teu comando.

ex1_ir_ler_codigos.ino
#include <IRremote.h>

const int PINO_IR = 11;
IRrecv recetor(PINO_IR);
decode_results resultado;

void setup() {
  Serial.begin(9600);
  recetor.enableIRIn();
  Serial.println("Aponta o comando e prime um botão...");
}

void loop() {
  if (recetor.decode(&resultado)) {
    Serial.print("Código HEX: 0x");
    Serial.println(resultado.value, HEX);
    recetor.resume();   // Prepara para próxima receção
  }
}
📋Anota os códigos HEX de cada botão que pretendes usar. Vai precisar deles no exercício 2.

Exercício 2 — Controlar LED com Comando

ex2_ir_controlo.ino
#include <IRremote.h>

const int PINO_IR = 11;
const int LED_R = 9;
const int LED_G = 10;
const int LED_B = 11; // Ajusta conforme os teus pinos

// Substitui pelos códigos do teu comando!
#define BTN_1  0xFF30CF
#define BTN_2  0xFF18E7
#define BTN_3  0xFF7A85

IRrecv recetor(PINO_IR);
decode_results resultado;

void setup() {
  pinMode(LED_R, OUTPUT);
  pinMode(LED_G, OUTPUT);
  recetor.enableIRIn();
  Serial.begin(9600);
}

void loop() {
  if (recetor.decode(&resultado)) {
    long codigo = resultado.value;
    Serial.println(codigo, HEX);
    
    switch (codigo) {
      case BTN_1:
        digitalWrite(LED_R, !digitalRead(LED_R)); // Toggle vermelho
        break;
      case BTN_2:
        digitalWrite(LED_G, !digitalRead(LED_G)); // Toggle verde
        break;
      case BTN_3:
        // Desliga todos
        digitalWrite(LED_R, LOW);
        digitalWrite(LED_G, LOW);
        break;
    }
    recetor.resume();
  }
}
Próximo: Motor de Passo →