// Not checked if the functions are used properly.
// Changed for the values of the remote control of Wokwi.
// Added Serial output.
// There is a message at startup from the IRremote library.

#include <Adafruit_NeoPixel.h>

#define DATAPIN 10
#define NUMPIXELS 31
#define DELAYVAL 500
Adafruit_NeoPixel pixels(NUMPIXELS, DATAPIN, NEO_GRB + NEO_KHZ800);


#include <IRremote.h>

const int RECV_PIN = 4;

int togglestate = 0;

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(115200);

  irrecv.enableIRIn();

  pixels.begin();
}

void loop() {
  if (irrecv.decode(&results)) {

    Serial.print( "Received: 0x");
    Serial.println( results.value, HEX);

    switch (results.value) {

      case 0xFF0CF3: // 1        // 0xF7C03F: //on

        //ckech red
        if (togglestate == 0) {
          pixels.fill(pixels.Color(150, 0, 0));
          pixels.show();

          //check green
        } else if (togglestate == 1) {
          pixels.fill(pixels.Color(0, 150, 0));
          pixels.show();

          //check blue
        } else if (togglestate == 2) {
          pixels.fill(pixels.Color(0, 0, 150));
          pixels.show();
        }
        break;

      case 0xFF18E7: // 2       // 0xF740BF: //off
        pixels.fill(pixels.Color(0, 0, 0));
        pixels.show();
        break;

      case 0xFF5EA1: // 3       //red
        togglestate = 0;
        pixels.fill(pixels.Color(150, 0, 0));
        pixels.show();
        break;

      case 0xFF08F7: // 4        //green
        togglestate = 1;
        pixels.fill(pixels.Color(0, 150, 0));
        pixels.show();
        break;

      case 0xFF1CE3: // 5        //blue
        togglestate = 2;
        pixels.fill(pixels.Color(0, 0, 150));
       pixels.show();
        break;
    }
    irrecv.resume();
  }
}