String data_In; //siapkan data workcover
String DT[10]; //penampungan data
int i;
boolean flag_parse = false; //markingnya, jd bisa switch hrs jalan/ga
int flag_Led1, flag_Led2;
//LED PORT
int LED1 = 23;
int LED2 = 22;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Parsing Data Ready, Geni!!");
data_In; //reset data
pinMode(LED1, OUTPUT); //TLS OUTPUTNYA
pinMode(LED2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()>0) { // cek serialnya ada isinya ga, akan ngecek jmlh karakternya
char inputChar = (char) Serial.read(); //masukan input karakter ke file kita
data_In += inputChar; //masukan datanya
if(inputChar == '\n'){//pake marking kalau ketemu ini jd true dan kebalikannya
flag_parse = true;
}
}
if(flag_parse){
parsing_Data();//cara menampilka
flag_parse = false; //agar tidak mengulang terus
data_In=""; //reset string buffer
}
led(LED1, flag_Led1);
led(LED2, flag_Led2);
}
//dan membuat algoritma
void parsing_Data (){ //untuk nyimpen data apa saja,
int j = 0;
//read data input from serial
Serial.print("Isi data In: "); Serial.print(data_In);
//akan increament berdasarkan data yg kita tentukan, dgn kita kosongkan dl
//clearing inisial data
DT [j] = ""; //cara menampilkan dgn masukan ke function algoritmanya
//algoritma for parsing data
for (i = 0; i < data_In.length(); i++){
//checking sparator data frame in csv format --> data1;data2; dst
if(data_In[i] == ' '||data_In[i] == '='||data_In[i] == '\n'){
j++;
DT[j] = ""; //inisialisasiarray yg DT
} else{
DT[j] = DT[j] + data_In[i]; //setiap data yg msk akan di cek satu persatu
}
}
// Serial.print("Data 0 = "); Serial.println(DT[0]);
// Serial.print("Data 1 = "); Serial.println(DT[1]);
// Serial.print("Data 2 = "); Serial.println(DT[2]);
// Serial.print("Data 3 = "); Serial.println(DT[3]);
/*
Test Data: 1;2;3;4
Test Data: 1.1;2.2;3.3;4.4
*/
//float untuk desimal
//Serial.print("Data 0 = "); Serial.println(DT[0].toInt());
//Serial.print("Data 1 = "); Serial.println(DT[1].toInt());
/*
PARAM LED1=1
SET LED1=1
//RUN
//KILL
ETC
*/
if(DT[0]=="PARAM"){
Serial.println("Param True!");
if(DT[1]=="LED1"){
Serial.println("LED1 Sellected!");
flag_Led1 = DT[2].toInt();
Serial.println("DATA LED1:");
Serial.println(flag_Led1);
}if(DT[1]=="LED2"){
Serial.println("LED1 Sellected");
flag_Led2 = DT[2].toInt();
Serial.println("DATA LED2:");
Serial.println(flag_Led2); }
else{
Serial.println("Another LED!");}
}if(DT[0]=="RUN"){
Serial.println("Running!");
if(DT[1]=="ALL"){
flag_Led1=1;
flag_Led2=1;
Serial.println("ALL");
}else{
Serial.println("Stop!");
}
}
if(DT[0]=="KILL"){
Serial.println("KILLED!");
if(DT[1]=="ALL"){
flag_Led1=0;
flag_Led2=0;
Serial.println("ALL");
}else{
Serial.println("Running!");
}
}else{
Serial.println("Another Command!");
}
}
/*
//untuk alggoritma penjmlhn
float sum; //kl float pasti gbs
sum = DT [0].toInt() + DT[1].toFloat(); //ini kl float
//sum = DT[0]+DT[1]
Serial.print("Data Penjumlahan = "); Serial.println(sum);
*/
void led(int ch, int state){
if(state==0){
digitalWrite(ch, HIGH);
}
if(state==1)
{
digitalWrite(ch,LOW);
}
}