#include<Wire.h>
//#include<SPI.h>//Arduino
//#include<Adafruit_SH1106.h>//Arduino
//Adafruit_SH1106 OLED(-1);//Arduino
#include<Adafruit_GFX.h>//Wokwi
#include<Adafruit_SSD1306.h>//Wokwi
Adafruit_SSD1306 OLED(128,64,&Wire,-1);//Wokwi
#include <IRremote.h>
int RECV_PIN = 7;
int LED1=13,LED2=12,LED3=11,LED4=10;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
   OLED.begin(SSD1306_SWITCHCAPVCC,0x3c);
  // put your setup code here, to run once:
  pinMode(RECV_PIN, INPUT);
  pinMode(LED1, OUTPUT);
  irrecv.enableIRIn();
  Serial.begin(9600);
  OLED.clearDisplay();
}
int flag=0,flag2=0;
void loop() {
  OLED.setTextColor(WHITE,BLACK);
  OLED.setCursor(10,5);
  OLED.setTextSize(1);
  OLED.print("Lamp 1 =");
  OLED.setCursor(10,20);
  OLED.setTextSize(1);
  OLED.print("Fan 1 =");
  OLED.setCursor(10,35);
  OLED.setTextSize(1);
  OLED.print("Door =");
  OLED.setCursor(10,50);
  OLED.setTextSize(1);
  OLED.print("Pump =");
  
  // put your main code here, to run repeatedly:
  if(irrecv.decode(&results)){
    if(results.value==0xFF0CF3){
        digitalWrite(LED1, HIGH);
        Serial.println("Lamp 1 = On");
        OLED.setCursor(63,5);
        OLED.setTextSize(1);
        OLED.print("On ");
      }
    else if(results.value==0xFF18E7){
        digitalWrite(LED1, LOW);
        Serial.println("Lamp 1 = Off");
        OLED.setCursor(63,5);
        OLED.setTextSize(1);
        OLED.print("Off");
        
      }
    if(results.value==0xFF5EA1){
        digitalWrite(LED2, HIGH);
        Serial.println("FAN 1 = On");
        OLED.setCursor(60,20);
        OLED.setTextSize(1);
        OLED.print("On ");
        
      }
    else if(results.value==0xFF08F7){
        digitalWrite(LED2, LOW);
        Serial.println("FAN 1 = Off");
        OLED.setCursor(60,20);
        OLED.setTextSize(1);
        OLED.print("Off");
        
      }
    if(results.value==0xFF1CE3){
      if(flag == 0){
        digitalWrite(LED3, HIGH);
        Serial.println("Door = OPEN");
        OLED.setCursor(53,35);
        OLED.setTextSize(1);
        OLED.print("OPEN");
        flag = 1;
      }
      else{
        digitalWrite(LED3, LOW);
        Serial.println("Door = LOCK");
        OLED.setCursor(53,35);
        OLED.setTextSize(1);
        OLED.print("LOCK");
        flag = 0;
      }}
      if(results.value==0xFF42BD){
      if(flag2 == 0){
        digitalWrite(LED4, HIGH);
        Serial.println("Pump = On");
        OLED.setCursor(53,50);
        OLED.setTextSize(1);
        OLED.print("On ");
        flag2 = 1;
      }
      else{
        digitalWrite(LED4, LOW);
        Serial.println("Pump = Off");
        OLED.setCursor(53,50);
        OLED.setTextSize(1);
        OLED.print("Off");
        flag2 = 0;
      }}
    Serial.println(results.value,HEX);
    irrecv.resume();

  }
  OLED.display();
}