untuk beberapa pengaplikasian, kita menginginkan arduino dapat membaca sebuah data kemudian memisahkannya berdasarkan delimiter tertentu, spasi misalnya atau karakter karakter lainnya. Pemisah karakter berdasarkan delimiter ini tentunya akan membuat pengiriman data lebih simple, karena kita hanya perlu mengirimkan string per baris dengan delimiter tertentu, kemudian biarkan arduino yang memisahkan string tersebut.
Setelah saya coba searching, akhirnya saya menemukan salah satu caranya, yaitu dengan menggunakan strtok, dalam penggunaan strtok ini, data yang akan dipisahkan type data nya harus berupa char bukan string, karena data yang diterima adalah perbaris dan berupa string, maka terlebih dahulu string tersebut harus dirubah menjadi type data char, saya sendiri menggunakan fungsi charAt() sebagai cara untuk merubah bentuk string kedalam char
Untuk lebih jelasnya, berikut adalah sketch strtok di Arduino yang sudah dibuat
//Array untuk Menampung value String yang nantinya akan dirubah menjadi type data char
char ValStr[64];
//variable yang akan menampung data yang sudah dipisah berdasarkan delimiter
char *tok;
char *tok1;
char *tok2;
String inString = "";
void setup() {
Serial.begin(9600);
Serial.println("Strtoken di Arduino");
}
void loop() {
while (Serial.available() > 0) {
char inChar = Serial.read();
inString += inChar;
if (inChar == '\n') {
//proses merubah String menjadi character
for (int i=0; i< inString.length(); i++){ ValStr[i] = inString.charAt(i); } tok = strtok (ValStr, " "); tok1 = strtok (NULL, " "); //isi dengan karakter pemisah/delimiter tok2 = strtok (NULL, " "); Serial.println(tok); Serial.println(tok1); Serial.println(tok2); } } }
pada contoh diatas, saya menggunakan spasi sebagai delimiter untuk string nya, dan hasilnya seperti berikut:
delimiter diatas dapat anda ganti dengan karakter pemisah lainnya, misalnya
tok2 = strtok (NULL, "X; ");
pada perintah tersebut, pemisahnya adalah X, titik koma (;), dan spasi ( ). penggunaan strtok ini akan sangat berguna ketika kita hendak membuat software interface untuk robot Arm 4 dof misalnya, tetapi jika kita ingin menggunakan karakter yang sudah dipisah ini sebagai perintah untuk menggerakkan aktuator, kita harus mengenal cara merubah string menjadi integer, kenapa ?. Karena data yang dibutuhkan untuk menggerakkan aktuator adalah data berupa integer/float, buka character atau string.
di artikel selanjutnya saya akan membahas penggunaan atoi dan atof untuk merubah karaker menjadi integer atau float
mantull gan
ReplyDeleteSolder uap