#include <IRremote.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Servo myservo1;
Servo myservo2;
Servo myservo3;
LiquidCrystal_I2C lcd(0x27, 16, 2);
IRrecv receiver(2);
int pos = 0;
void setup() {
Serial.begin(9600);
receiver.enableIRIn();
lcd.init();
lcd.backlight();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Penyortir Sampah");
myservo1.attach(6);
myservo2.attach(5);
myservo3.attach(3);
myservo1.write(0);
delay(100);
myservo2.write(0);
delay(100);
myservo3.write(0);
delay(100);
pinMode(7, OUTPUT);
digitalWrite(7, LOW);
}
void loop() {
if (receiver.decode()) {
translateIR();
receiver.resume();
}
}
void translateIR() {
switch (receiver.decodedIRData.command) {
case 48:
digitalWrite(7, HIGH);
lcd.setCursor(0, 1);
lcd.print("Sampah Residu ");
Serial.println("num: 1");
for (pos = 0; pos <= 180; pos += 1) {
myservo1.write(pos);
delay(15);
}
digitalWrite(7, LOW);
delay(2000);
for (pos = 180; pos >= 0; pos -= 1) {
myservo1.write(pos);
delay(15);
}
break;
case 24:
digitalWrite(7, HIGH);
lcd.setCursor(0, 1);
lcd.print("Sampah Plastik ");
Serial.println("num: 2");
for (pos = 0; pos <= 180; pos += 1) {
myservo2.write(pos);
delay(15);
}
digitalWrite(7, LOW);
delay(2000);
for (pos = 180; pos >= 0; pos -= 1) {
myservo2.write(pos);
delay(15);
}
break;
case 122:
digitalWrite(7, HIGH);
lcd.setCursor(0, 1);
lcd.print("Sampah Kertas ");
Serial.println("num: 3");
for (pos = 0; pos <= 180; pos += 1) {
myservo3.write(pos);
delay(15);
}
digitalWrite(7, LOW);
delay(2000);
for (pos = 180; pos >= 0; pos -= 1) {
myservo3.write(pos);
delay(15);
}
break;
}
}