// Controle-Remoto-Arduíno-Nano
#include <IRremote.h>
// Pino Digital 13 onde está o LED
#define PINO_LED 12
// Pino Digital 2 onde está o receptor IR
#define PINO_RECV 2
// Pino Digital 4 onde está o ECHO do sensor ultrassônico
#define PINO_ECHO 4
// Pino Digital 5 onde está o TRIG do sensor ultrassônico
#define PINO_TRIG 5
void setup() {
Serial.begin(9600);
// Inicializa o receptor IR no pino especificado
IrReceiver.begin(PINO_RECV, ENABLE_LED_FEEDBACK);
Serial.println("Receptor IR pronto. Aguardando comandos da Sony...");
// Define o pino do LED como saída
pinMode(PINO_LED, OUTPUT);
// Define o pino TRIG como saída
pinMode(PINO_TRIG, OUTPUT);
// Define o pino ECHO como entrada
pinMode(PINO_ECHO, INPUT);
}
void loop() {
if (IrReceiver.decode()) {
// Verifica se o protocolo detectado é o da Sony
if (IrReceiver.decodedIRData.protocol == SONY) {
Serial.print("Protocolo: SONY | ");
Serial.print("Comando (HEX): 0x");
Serial.println(IrReceiver.decodedIRData.command, HEX);
} else {
// Exibe outros protocolos caso o controle genérico do Wokwi envie algo diferente
Serial.print("Outro protocolo - HEX: 0x");
Serial.println(IrReceiver.decodedIRData.command, HEX);
}
// Pisca o LED para indicar recepção
digitalWrite(PINO_LED, HIGH);
delay(50);
digitalWrite(PINO_LED, LOW);
// Garante que o pino TRIG esteja inicialmente em nível baixo
digitalWrite(PINO_TRIG, LOW);
delayMicroseconds(10);
// Envia o pulso de disparo para o sensor ultrassônico
digitalWrite(PINO_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PINO_TRIG, LOW);
// Mede o tempo de retorno do sinal ultrassônico
long duracao = pulseIn(PINO_ECHO, HIGH);
// Calcula a distância em centímetros
float distancia = duracao * 0.0343 / 2;
// Exibe o valor da distância no Monitor Serial
Serial.print("Distância: ");
// Exibe o valor calculado da distância
Serial.print(distancia);
// Exibe a unidade de medida em centímetros
Serial.println(" cm");
// Prepara o receptor para receber o próximo sinal
IrReceiver.resume();
}
}