#include <IRremote.h>
// Pines motores
const int ENA = 10; // PWM motor izquierdo
const int IN1 = 9;
const int IN2 = 8;
const int ENB = 5; // PWM motor derecho
const int IN3 = 7;
const int IN4 = 6;
// Receptor IR en pin 11
#define IR_PIN 11
IRrecv irrecv(IR_PIN);
decode_results results;
void setup() {
pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // iniciar receptor IR
stopMotors();
Serial.println("Auto listo con control IR");
}
void loop() {
if (irrecv.decode(&results)) {
unsigned long code = results.value;
Serial.print("Codigo IR: "); Serial.println(code, HEX);
handleIR(code);
irrecv.resume(); // esperar próxima señal
}
}
void handleIR(unsigned long code) {
int v = 200; // velocidad por defecto (0-255)
//
switch (code) {
case 0xFF629D: forward(v); break; // Botón "2"
case 0xFFA857: backward(v); break; // Botón "8"
case 0xFF22DD: turnLeft(v); break; // Botón "4"
case 0xFFC23D: turnRight(v); break; // Botón "6"
case 0xFF02FD: stopMotors(); break; // Botón "5"
default: break;
}
}
// --------------------- funciones motores ---------------------
void forward(int speed) {
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
analogWrite(ENA, speed); analogWrite(ENB, speed);
}
void backward(int speed) {
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
analogWrite(ENA, speed); analogWrite(ENB, speed);
}
void turnLeft(int speed) {
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
analogWrite(ENA, speed); analogWrite(ENB, speed);
}
void turnRight(int speed) {
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
analogWrite(ENA, speed); analogWrite(ENB, speed);
}
void stopMotors() {
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
analogWrite(ENA, 0); analogWrite(ENB, 0);
}