hi
study this code if you understand it then you can code whatever you need via serial
//--------------------------------------------
// Ardino code**
//---------------------------------------------
#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial mySerial(11, 12); // RX, TX
int red_led = 3;
int green_led = 6;
int blue_led = 5;
int int_1 = 0;
int int_2 = 0;
int int_3 = 0;
const byte number_of_chars = 32;
char receivedChars[number_of_chars];
boolean new_data = false;
void setup() {
mySerial.begin(9600); // Set the baudrate equal to HC06 setting
Serial.begin(9600);
pinMode(red_led, OUTPUT);
pinMode(green_led, OUTPUT);
pinMode(blue_led, OUTPUT);
}
void loop() {
receivePacket();
if (new_data == true) {
parseData();
executeParsedData();
new_data = false;
}
}
void receivePacket() {
static boolean receiving = false;
static byte index = 0;
char start_mark = '<';
char end_mark = '>';
char rc;
while (mySerial.available() > 0 && new_data == false) {
rc = mySerial.read();
if (receiving == true) {
if (rc != end_mark) {
receivedChars[index] = rc;
index++;
if (index >= number_of_chars) {
index = number_of_chars-1;
}
} else {
receivedChars[index] = '\0';
receiving = false;
index = 0;
new_data = true;
}
} else if (rc == start_mark) {
receiving = true;
}
}
}
void parseData() {
char * split;
split = strtok(receivedChars, ",");
int_1 = atoi(split);
split = strtok(NULL, ",");
int_2 = atoi(split);
split = strtok(NULL, ",");
int_3 = atoi(split);
}
void executeParsedData() {
if (int_3 == 0) {
analogWrite(red_led, 0);
analogWrite(green_led, 0);
analogWrite(blue_led, 0);
} else if (int_3 == 1) {
analogWrite(red_led, 255);
analogWrite(green_led, 255);
analogWrite(blue_led, 255);
} else if (int_3 == 2) {
if (int_2 == 0) analogWrite(red_led, int_1);
if (int_2 == 1) analogWrite(green_led, int_1);
if (int_2 == 2) analogWrite(blue_led, int_1);
}
}