Sorry about that. Below is the whole code. I apologize for the formatting 
#include <SoftwareSerial.h>
#include <FastLED.h>
SoftwareSerial hc06(2,3);
String cmd="";
float sensor_val=0;
#define ledPin 12
#define NUM_LEDS 20
#define FRAMES_PER_SECOND 120
#define LED_TYPE WS2811
#define COLOR_ORDER GRB
int state = 0;
int index = 0;
int count = 1;
int commacount = 0;
String color;
String brightness;
String mode;
CRGB leds[NUM_LEDS];
void setup(){
//Initialize Serial Monitor
Serial.begin(115200);
Serial.println("ENTER AT Commands:");
//Initialize Bluetooth Serial Port
hc06.begin(115200);
FastLED.addLeds<WS2812B, ledPin, GRB>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
FastLED.setBrightness(255);
}
typedef void (*SimplePatternList[])();
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };
uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current
uint8_t gHue = 0; // rotating "base color" used by many of the patterns
void loop(){
//Read data from HC06
while(hc06.available()>0){
// char temp = (char)hc06.read();
// if (isDigit(temp) || (temp ==',')) {
cmd += (char)hc06.read();
// }
}
//Select function with cmd
if(cmd!=""){
Serial.print("Command recieved : ");
Serial.println(cmd);
while (((index) < cmd.length())&& ((isDigit(cmd[index])) || (cmd[index] == ',')) ) {
char byteIn = cmd[index];
if (byteIn == ',') {
count++;
}
if ((byteIn != ',')) {
if (count == 1) {
mode += byteIn;
} else if (count == 2) {
brightness += byteIn;
} else if (count == 3) {
color += byteIn;
}
}
index++;
}
int COLOR = color.toInt();
int BRIGHTNESS = brightness.toInt();
Serial.print("COLOR: ");
Serial.println(COLOR);
Serial.print("BRIGHTNESS: ");
Serial.println(BRIGHTNESS);
if(cmd=="OFF"){
Serial.println("Function is off");
fill_solid(leds, NUM_LEDS, CRGB::Black);
} else if (mode=="1") {
if (BRIGHTNESS > 0) {
fill_solid(leds, NUM_LEDS, CHSV(COLOR, 255, BRIGHTNESS));
}
} else if (mode=="3") {
// Call the current pattern function once, updating the 'leds' array
gPatterns[gCurrentPatternNumber]();
// send the 'leds' array out to the actual LED strip
FastLED.show();
// insert a delay to keep the framerate modest
FastLED.delay(1000/FRAMES_PER_SECOND);
// do some periodic updates
EVERY_N_MILLISECONDS( 20 ) { gHue++; } // slowly cycle the "base color" through the rainbow
EVERY_N_SECONDS( 10 ) { nextPattern(); } // change patterns periodically
}
else {
Serial.println("unknown command");
}
count=1; //reset count
index=0; //reset index
mode="";
color="";
brightness="";
FastLED.show();
}
cmd=""; //reset cmd }
}
#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0]))
void nextPattern()
{
// add one to the current pattern number, and wrap around at the end
gCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns);
}
void rainbow()
{
// FastLED's built-in rainbow generator
fill_rainbow( leds, NUM_LEDS, gHue, 7);
}
void rainbowWithGlitter()
{
// built-in FastLED rainbow, plus some random sparkly glitter
rainbow();
addGlitter(80);
}
void addGlitter( fract8 chanceOfGlitter)
{
if( random8() < chanceOfGlitter) {
leds[ random16(NUM_LEDS) ] += CRGB::White;
}
}
void confetti()
{
// random colored speckles that blink in and fade smoothly
fadeToBlackBy( leds, NUM_LEDS, 10);
int pos = random16(NUM_LEDS);
leds[pos] += CHSV( gHue + random8(64), 200, 255);
}
void sinelon()
{
// a colored dot sweeping back and forth, with fading trails
fadeToBlackBy( leds, NUM_LEDS, 20);
int pos = beatsin16( 13, 0, NUM_LEDS-1 );
leds[pos] += CHSV( gHue, 255, 192);
}
void bpm()
{
// colored stripes pulsing at a defined Beats-Per-Minute (BPM)
uint8_t BeatsPerMinute = 62;
CRGBPalette16 palette = PartyColors_p;
uint8_t beat = beatsin8( BeatsPerMinute, 64, 255);
for( int i = 0; i < NUM_LEDS; i++) { //9948
leds[i] = ColorFromPalette(palette, gHue+(i*2), beat-gHue+(i*10));
}
}
void juggle() {
// eight colored dots, weaving in and out of sync with each other
fadeToBlackBy( leds, NUM_LEDS, 20);
uint8_t dothue = 0;
for( int i = 0; i < 8; i++) {
leds[beatsin16( i+7, 0, NUM_LEDS-1 )] |= CHSV(dothue, 200, 255);
dothue += 32;
}
}
I did take the time to read the tutorial. However, just for an example, I did:
// Example 2 - Receive with an end-marker
const byte numChars = 32;
char receivedChars[numChars]; // an array to store the received data
boolean newData = false;
void setup() {
Serial.begin(115200);
Serial.println("<Arduino is ready>");
}
void loop() {
recvWithEndMarker();
showNewData();
}
void recvWithEndMarker() {
static byte ndx = 0;
char endMarker = '\n';
char rc;
while (hc06.available() > 0 && newData == false) {
rc = hc06.read();
if (rc != endMarker) {
receivedChars[ndx] = rc;
ndx++;
if (ndx >= numChars) {
ndx = numChars - 1;
}
}
else {
receivedChars[ndx] = '\0'; // terminate the string
ndx = 0;
newData = true;
}
}
}
void showNewData() {
if (newData == true) {
Serial.print("Received Command: ");
Serial.println(receivedChars);
newData = false;
}
}
And my serial output was like this - again, with the random garbage and characters popping up:
