
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 1); // RX, TX

#define white 8
#define red 7
#define green 3
#define blue 0

unsigned int incomingData;
unsigned int incomingData1;
unsigned int incomingDataRAW;
int whiteColorIntensity = 0;
int previousIncomingData;

void setup() {

  mySerial.begin(9600);

  pinMode(white, OUTPUT);
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(blue, OUTPUT);
}

void loop() {
  if (mySerial.available() >= 2 ) // receive number from bluetooth
  {

    incomingData = mySerial.read();
    incomingData1 = mySerial.read();
    incomingDataRAW = (incomingData1 * 256) + incomingData;

    if (incomingDataRAW > 4) {
      whiteColorIntensity = incomingDataRAW;
      incomingDataRAW = previousIncomingData;
    }
  }

  if (incomingDataRAW == 1) {
    previousIncomingData = incomingDataRAW;
    digitalWrite(red, HIGH);
    delay(500);
    digitalWrite(red, LOW);
    digitalWrite(green, HIGH);
    delay(500);
    digitalWrite(green, LOW);
    digitalWrite(blue, HIGH);
    delay(500);
    digitalWrite(blue, LOW);
    digitalWrite(white, HIGH);
    delay(500);
    digitalWrite(white, LOW);
    delay(1000);
  }
  else if (incomingDataRAW == 2) {
    previousIncomingData = incomingDataRAW;
    digitalWrite(red, HIGH);
    delay(100);
    digitalWrite(red, LOW);
    digitalWrite(green, HIGH);
    delay(100);
    digitalWrite(green, LOW);
    digitalWrite(blue, HIGH);
    delay(100);
    digitalWrite(blue, LOW);
    digitalWrite(white, HIGH);
    delay(100);
    digitalWrite(white, LOW);
    delay(10);
  }
  else if (incomingDataRAW == 3) {
    previousIncomingData = incomingDataRAW;
    analogWrite(white, whiteColorIntensity);
  }
  else if (incomingDataRAW == 0) {
    digitalWrite(red, LOW);
    digitalWrite(green, LOW);
    digitalWrite(blue, LOW);
    digitalWrite(white, LOW);
  }
}
