Parsing Data di Arduino - Memisahkan Data Serial


Halo sobat tekno, kali ini kita kembali hadir dengan tutuorial seputar Arduino. Pada topik sebelumnya kita sudah pernah membahas bagaimana cara parsing data di Visual Studio yang bisa anda lihat di link berikut.
Masih sama dengan topik sebelumnya, kali ini saya akan membahas bagaimana cara parsing data di Arduino. Jadi apasih fungsi parsing data? Parsing data digunakan ketika kita membutuhkan beberapa data yang tergabung dalam satu kesatuan data. Parsing data biasanya digunakan pada komunikasi serial, dimana jika kita ingin mengirim beberapa data dalah satu serial dan untuk menerimanya kita perlu memecah data tersebut agar terpisah kembali.

Sebagai contoh, saya ingin mengirimkan data nama, suhu, kelembapan, dan jarak. Untuk mengirim data tersebut melalui serial, kita perlu menggabungnya menjadi sebuah data. Caranya cukup mudah, kita hanya perlu membuat suatu karakter pemisah tiap data. Karakter pemisah tersebut nantinya akan memisahkan tiap-tiap data yang berbeda. Jika belum terlalu jelas anda bisa lihat contoh dibawah.


int suhu, kelembapan, jarak;
char nama = teknodika;
String strSuhu, strKelembapan, strJarak;

void setup(){
}

void loop(){
suhu=analogRead(A0);
kelembapan=analogRead(A1);
jarak=analogRead(A2);

strSuhu =String(suhu);
strKelembapan=String(kelembapan);
strJarak=String(jarak);
  
Serial.println('*'+nama+','+strSuhu+','+strKelembapan+','+strJarak+'#');
delay(100);
}

Pada program tersebut, saya mengirim sejumlah data. Untuk mengirimkan data dalam bentuk serial, saya terlebih dahulu mengkonversi tiap variabel menjadi tipe string. Setelah itu tinggal gunakan Serial.print(); untuk mengirim

Sesuai program, berarti terdapat 4 buah data yaitu:

  • data nama = 'teknodika'
  • data suhu = analogRead(A0). Kita misalkan nilainya 34
  • data kelembapan = analogRead(A1). Kita misalkan nilainya 500.
  • data jarak = analogRead(A2). Kita misalkan nilainya 50.


Dengan sintak pada contoh program diatas, data yang dikirimkan akan menjadi:

*teknodika,34,500,50#

Lalu bagaimana memecah data tersebut menjadi data semula?

Silahkan copy program dibawah ini dan masukan ke arduino anda.


String dataIn;
String dt[10];
int i;
boolean parsing=false;

void setup() {
   Serial.begin(115200);
   dataIn="";
}

void loop() {
  if(Serial.available()>0) {
    delay(10);
    char inChar = (char)Serial.read();
    dataIn += inChar;
    if (inChar == '\n') {
    parsing = true;
  }
}
 
if(parsing){
    parsingData();
    parsing=false;
    dataIn="";
  }
}

void parsingData(){
int j=0;
 
//kirim data yang telah diterima sebelumnya
Serial.print("data masuk : ");
Serial.print(dataIn);
 
//inisialisasi variabel, (reset isi variabel)
dt[j]="";
//proses parsing data
for(i=1;i<dataIn.length();i++){
//pengecekan tiap karakter dengan karakter (#) dan (,)
if ((dataIn[i] == '#') || (dataIn[i] == ','))
{
//increment variabel j, digunakan untuk merubah index array penampung
j++;
dt[j]="";       //inisialisasi variabel array dt[j]
}
else
{
//proses tampung data saat pengecekan karakter selesai.
dt[j] = dt[j] + dataIn[i];
}
}
 
//kirim data hasil parsing
Serial.print("data 1 : ");
Serial.println(dt[0]);
Serial.print("data 2 : ");
Serial.println(dt[1].toInt());
Serial.print("data 3 : ");
Serial.println(dt[2].toInt());
Serial.print("data 4 : ");
Serial.println(dt[3].toInt());
Serial.print("\n\n");
}

Hasil dari run program diatas akan seperti berikut:


data masuk: *teknodika,34,500,50#

data 1: teknodika
data 2: 34
data 3: 500
data 4: 50

Pada program diatas, pemisah yang digunakan yaitu tana ',' sebagai pemisah tiap karakter. Digunakan juga tanda'*' sebagai tanda data awal dan '#' sebagai tanda data terakhir..

Berikut merupakan contoh dari parsing data di arduino. Jika merasa kurang jelas, silahkan tanyakan pada kolom komentar. Terimakasih telah membaca dan jangan lupa share.

Berlangganan update artikel terbaru via email:

0 Response to "Parsing Data di Arduino - Memisahkan Data Serial"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel