tiras LED ws2812 con arduino

hola a todos, primera vez por aquí, estoy escribiendo para recibir una ayudita no logro hacer que funcione una parte de mi configuración.

estoy automatizando mi dormitorio con arduino y unas luces led (tiras ws2812 RGB) he realizado una aplicacion con la aplcacion (appinventor2) que cuando aprieto un color en la pantalla de mi teléfono móvil
el movil envia un caracter que luego arduino recibe por un dispositivo bluetooth hc-05 que luego captura el caracter enviado y lo ejecuta con la funcion if.
el problema es que los ejemplos de la libreria neopixel de adafruit existe un efecto arcoiris (rainbow) la cual quiero incluir en mi sistema pero no se como configurarla para que cuando envíe un carácter especifico por mi smartphone este se ejecute.

este es mi sketch actual:

// ROJO = Q
// CAFE = Y
// NARANJO = W
// ANARILLO = T
// VERDE = R
// AZUL = S
// ROSADO = U
// MORADO = V
// CELESTE = X
// BLANCO = L
// NEGRO = N
// ARCOIRIS = P

#include <Adafruit_NeoPixel.h>
#ifdef AVR
#include <avr/power.h>
#endif
#define PIN 6
#define NUMPIXELS 60
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 50;
int state = 0;
void setup () {
Serial.begin(9600);

delay(10);
#if defined (AVR_ATtiny85)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
pixels.begin();

for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(0,0,0));
pixels.show();
delay(5);
}
}

void loop(){
BLUETOOTH();
}

void BLUETOOTH(){

if (Serial.available() > 0){
state = Serial.read();
}
if (state ==‘Q’){
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(0,250,0)); // ROJO
pixels.show();
delay(delayval);
}
}
if (state == ‘R’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(250,0,0)); // VERDE
pixels.show();
delay(delayval);
}
}
if (state == ‘S’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(0,0,250)); // AZUL
pixels.show();
delay(delayval);
}
}
if (state == ‘N’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(0,0,0)); // NEGRO
pixels.show();
delay(5);
}
}
if (state == ‘L’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(250,250,250)); // BLANCO
pixels.show();
delay(delayval);
}
}
if (state == ‘Y’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(32,128,32)); // CAFE
pixels.show();
delay(delayval);
}
}
if (state == ‘W’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(128,255,0)); // NARANJO
pixels.show();
delay(delayval);
}
}
if (state == ‘T’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(250,250,0)); // AMARILLO
pixels.show();
delay(delayval);
}
}
if (state == ‘U’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(128,255,255)); // ROSADO
pixels.show();
delay(delayval);
}
}
if (state == ‘V’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(0,128,128)); // MORADO
pixels.show();
delay(delayval);
}
}
if (state == ‘X’) {
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(250,128,250)); // CELESTE
pixels.show();
delay(delayval);
}
}

if (state == ‘P’) {
// RAINBOW

}
}

el problema es que no logro insertar por medio de un if el siguiente sketch:

#include <Adafruit_NeoPixel.h>
#ifdef AVR
#include <avr/power.h>
#endif
#define PIN 6
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
#if defined (AVR_ATtiny85)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
pixels.begin();
pixels.show();
}

void loop() {
rainbowCycle(20);
}

void rainbowCycle(uint8_t wait) {
uint16_t i, j;

for(j=0; j<256*5; j++) {
for(i=0; i< pixels.numPixels(); i++) {
pixels.setPixelColor(i, Wheel(((i * 256 / pixels.numPixels()) + j) & 255));
}
pixels.show();
delay(wait);
}
}
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {
return pixels.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return pixels.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return pixels.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

alguien tiene una idea de como ingresar esa parte del sketch, desde ya muchas gracias y cualquier duda es bienvenida. cuando tenga lista la instalación enviare un link con un vídeo y su funcionamiento.