Movimentando servo motor com Controle RemotoIR

 

Componentes Necessários:

  • Arduino Uno (ou similar)

  • Servo Motor (como SG90)

  • Módulo Receptor IR

  • Controle Remoto IR

  • Fios jumpers

  • Protoboard

Esquema de Ligação:

  • Servo:

    • Fio Vermelho → 5V

    • Fio Marrom → GND

    • Fio Amarelo/Laranja → Pino 9

  • Receptor IR:

    • VCC → 5V

    • GND → GND

    • OUT → Pino 11

Código Arduino:

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

// Definições dos pinos
#define IR_RECEIVE_PIN 11
#define SERVO_PIN 9

// Definições dos botões do controle IR (valores podem variar)
// Você precisa descobrir os códigos do seu controle
#define BUTTON_1 0xFFA25D  // Exemplo - substitua pelo código real
#define BUTTON_2 0xFF629D  // Exemplo - substitua pelo código real

// Cria objetos
Servo meuServo;
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results resultados;

// Variáveis de controle
int posicaoAtual = 90;  // Posição inicial (centro)
int incremento = 10;     // Quantos graus mover por comando

void setup() {
  Serial.begin(9600);
  
  // Inicializa o servo
  meuServo.attach(SERVO_PIN);
  meuServo.write(posicaoAtual);
  
  // Inicializa o receptor IR
  irrecv.enableIRIn();
  
  Serial.println("Sistema iniciado. Aguardando comandos IR...");
  Serial.println("Use os botões 1 e 2 do controle para mover o servo");
}

void loop() {
  // Verifica se recebeu sinal IR
  if (irrecv.decode(&resultados)) {
    
    // Exibe o código recebido no monitor serial (para debug)
    Serial.print("Código recebido: 0x");
    Serial.println(resultados.value, HEX);
    
    // Processa os comandos
    switch(resultados.value) {
      case BUTTON_1:
        moverServoDireita();
        break;
        
      case BUTTON_2:
        moverServoEsquerda();
        break;
        
      default:
        Serial.println("Botão não configurado");
        break;
    }
    
    // Prepara para receber próximo comando
    irrecv.resume();
    delay(200);  // Debounce
  }
}

void moverServoDireita() {
  if (posicaoAtual < 180) {
    posicaoAtual += incremento;
    if (posicaoAtual > 180) posicaoAtual = 180;
    meuServo.write(posicaoAtual);
    Serial.print("Movendo para direita: ");
    Serial.println(posicaoAtual);
  } else {
    Serial.println("Limite máximo atingido (180°)");
  }
}

void moverServoEsquerda() {
  if (posicaoAtual > 0) {
    posicaoAtual -= incremento;
    if (posicaoAtual < 0) posicaoAtual = 0;
    meuServo.write(posicaoAtual);
    Serial.print("Movendo para esquerda: ");
    Serial.println(posicaoAtual);
  } else {
    Serial.println("Limite mínimo atingido (0°)");
  }
}

Como Descobrir os Códigos do Seu Controle:

Antes de usar o código, você precisa descobrir os códigos hexadecimais dos botões do seu controle. Use este programa:

cpp
#include <IRremote.h> // Biblioteca IRemote
int RECV_PIN = 11; // Arduino pino D11 conectado no Receptor IR
IRrecv irrecv(RECV_PIN); // criando a instância
decode_results results; // declarando os resultados
void setup()
{
Serial.begin(9600); // Monitor velocidade 9600 bps
irrecv.enableIRIn(); // Inicializa a recepção de códigos
}
void loop()
{
if (irrecv.decode(&results)) // se algum código for recebido
{
Serial.println(results.value, HEX); // imprime o HEX Code
irrecv.resume(); // reinicializa o receptor
delay(10); // atraso de 10 ms
}
}



















Passos:

  1. Carregue este código no Arduino

  2. Abra o Monitor Serial

  3. Aperte os botões 1 e 2 do seu controle

  4. Anote os códigos hexadecimais que aparecem

  5. Substitua BUTTON_1 e BUTTON_2 no código principal pelos valores reais

Bibliotecas Necessárias:

Instale estas bibliotecas através do Gerenciador de Bibliotecas do Arduino IDE:

  • IRremote by Arduino-IRremote

  • Servo (já vem com Arduino IDE)

Funcionalidades:

  • ✅ Movimento suave do servo com botões 1 e 2

  • ✅ Limites de 0° a 180° para proteger o servo

  • ✅ Feedback serial para debug

  • ✅ Debounce para evitar múltiplas leituras

Dicas:

  • Ajuste o incremento para mudar a velocidade do movimento

  • Verifique a voltagem do servo (alguns precisam de fonte externa)

  • Teste os códigos do seu controle específico

O sistema está pronto para uso! Aperte o botão 1 para mover para um lado e botão 2 para o outro lado.

Comentários

Postagens mais visitadas