Kamis, 26 Februari 2015

Arduino Komunikasi serial dan pemisahan terhadap separator perintah

Berikut adalah penggunaan Arduino dengan komunikasi serial. Yang mana perintah dikirim dari pc melalui komunikasi serial. Perintah yang dikirim oleh pc memiliki format "data_1""separator""data_2". Disini separator yang digunakan adalah tanda "+". Misalnya pc mengirimkan perintah "12+3" maka Arduino harus memisahkan perintah tersebut menjadi data_1 dan data_2. Pada percobaan kali ini data_1 dan data_2 kemudian dijumlahkan.

Berikut adalah sourcecode yang digunakan: 


/*
Author: Muhammad Nurul Puji
muhammadpuji.its@gmail.com
16 Feb 2015
*/

char buff_char;
String buff_string = "";
float data_1, data_2, total;
String buff_data_1, buff_data_2;

void setup()
{
  Serial.begin(57600);
  delay(100);
  Serial.println("Welcome Muhammad Nurul Puji");
  Serial.println("");
  delay(1000);
}

void loop()
{
 

while(Serial.available()) {  //blok untuk menerima perintah serial    
    buff_char = Serial.read();
    buff_string.concat(buff_char);
    delay(1);  //delay ini sangat penting
  } 
 
 
  if(buff_string != ""){
    buff_data_1=(splitValue(buff_string, '+', 0));  //memisahkan string data dengan string separator "+"
    buff_data_2=(splitValue(buff_string, '+', 1));
   
    //char buff[buff_data_1.length()];               //mengubah string ke float
    //buff_data_1.toCharArray(buff,buff_data_1.length()+1);
    //data_1=atof(buff);

    data_1=buff_data_1.toInt();   //cara singkat mengubah string ke number
   
    //buff[buff_data_2.length()];                    //mengubah string ke float
    //buff_data_2.toCharArray(buff,buff_data_2.length()+1);
    //data_2=atof(buff); 

    data_2=buff_data_2.toInt();   //cara singkat mengubah string ke number   
    

    total = data_1 + data_2;
   
    Serial.print("Perintah awal adalah ");
    Serial.print(buff_string);  //bukan println karena perintah dikirim setelah ditekan enter
    Serial.print("Data 1 = ");
    Serial.println(data_1);
    Serial.print("Data 2 = ");
    Serial.println(data_2);
    Serial.print("Total data adalah ");
    Serial.println(total);
    Serial.println("");
   
    buff_string="";
  }
}

//Function untuk memisahkan data dengan separator

String splitValue(String data, char separator, int index){
  int found = 0;
  int strIndex[]={0, -1};
  int maxIndex = data.length()-1;
  for(int i=0; i<=maxIndex && found<=index; i++){
    if(data.charAt(i) == separator || i==maxIndex){
      found++;
      strIndex[0] = strIndex[1]+1;
      strIndex[1] = (i == maxIndex) ? i+1 : i;
    }
  }
  return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}



Referensi: dari postingan - postingan sebelumnya...........
--
Semoga bermanfaat

Selasa, 24 Februari 2015

Source code untuk mengenali pola data string dan memisahkannya dalam masing-masing variabel

Berikut adalah beberapa code untuk mengenali pattern ato pola string kemudian data string tersebut dapat dipisah sesuai "separator" yg digunakan. Source code berikut sangat powerfull dan terpilih dari beberapa sumber.

Pemisahan pattern string sangat penting dalam pemberian perintah (command), misal dalam aplikasi mikrokontroler yg diperintah oleh PC (atau mikrokontroller lain) untuk kontrol pengambilan data. Sehingga dalam sekali kirim perintah bisa dimasukkan beberapa parameter yg diinginkan. Kemudian mikrokontroller bisa memisahkan parameter-parameter tsb dgn sourcecode berikut ini.

Excellent code....

Stackexchange.com







Stackoverflow.com



Github.com



--
Sumber referensi (dicopy tgl 15 Februari 2015)
http://arduino.stackexchange.com/questions/1013/how-do-i-split-an-incoming-string
http://stackoverflow.com/questions/9072320/split-string-into-string-array
https://github.com/ka1/sousVide/blob/master/arduino/TempYun/functions.ino#

Cara mengetahui ip address raspberry atau perangkat lain yg terhubung pada wifi yg sama

1. Install nmap [jika belum ada]: sudo apt install nmap 2. Cek ip address komputer (yg akses ke wifi yang sama): ip addr misal hasilnya 192....