#include <IRremote.h>
#include <ESP32Servo.h>
#define PIN_RECEIVER 16
IRrecv receiver(PIN_RECEIVER);
const int numServos = 6;
const int servoPins[numServos] = {13, 12, 14, 27, 26, 25};
Servo servos[numServos];
const int minAngle = 0;
const int maxAngle = 180;
const int delayTime = 500;
void setup() {
for (int i = 0; i < numServos; i++) {
servos[i].setPeriodHertz(50);
servos[i].attach(servoPins[i]);
}
receiver.enableIRIn();
}
void loop() {
if (receiver.decode()) {
translateIR();
receiver.resume();
delay(100);
}
for (int angle = minAngle; angle <= maxAngle; angle += 10) {
for (int i = 0; i < numServos; i++) {
servos[i].write(angle);
}
delay(delayTime);
}
for (int angle = maxAngle; angle >= minAngle; angle -= 10) {
for (int i = 0; i < numServos; i++) {
servos[i].write(angle);
}
delay(delayTime);
}
delay(1000);
}
void translateIR()
{
switch (receiver.decodedIRData.command) {
case 162:
lcdPrint("POWER");
break;
case 2:
lcdPrint("PLUS");
break;
case 224:
lcdPrint("PREV.");
break;
case 168:
lcdPrint("PLAY");
break;
case 144:
lcdPrint("NEXT");
break;
case 152:
lcdPrint("MINUS");
break;
case 48:
lcdPrint("num: 1");
break;
case 24:
lcdPrint("num: 2");
break;
case 122:
lcdPrint("num: 3");
break;
case 16:
lcdPrint("num: 4");
break;
case 56:
lcdPrint("num: 5");
break;
case 90:
lcdPrint("num: 6");
break;
default:
Serial.print(receiver.decodedIRData.command);
Serial.print(" other button");
}
}