Bekerja dengan Variabel String di Arduino

String adalah tipe data yang berisi kumpulan karakter alfanumerik, bisa berupa angka, huruf maupun karakter khusus (*, @, #, dst). Tipe data string umum digunakan dalam berbagai macam Software Development Kit (SDK) semacam Delphi, VB, PHP, Java, dll. Namun bagaimana dengan bahasa pemrograman untuk perangkat embedded system, semisal mikrokontroller yang memiliki keterbatasan memori?

Char vs String

Di sistem Arduino, pada awalnya hanya mendukung ‘tipe sata ‘string’ dalam bentuk ‘kumpulan karakater’ (char array). Contoh

char inistringku[]=”saptaji.com”;

Variabel ‘inistringku’ di atas sebenarnya bukan murni string, tetapi sebenarnya adalah tipe data ‘char’ yang dikumpulan jadi satu (char array).

bekerja-dengan-variabel-string-di-arduino

Pada perkembangannnya (kalo ngga salah sejak versi 1.6.x ke atas), Arduino sudah mendukung String object. Bisa dikatakan bahwa string object inilah yang sama dengan pengertian string di bahasa pemrograman lain. Tapi yang perlu diperhatikan, penggunaan string object ini akan sangat menghabiskan dynamic memory. Jadi buat yang menggunakan Arduino Uno dan sekelasnya harap diperhatikan ya, supaya tidak muncul warning di jendela debug Arduino IDE.

Penggunaan Variabel String di Arduino

Untuk menggunakan variabel string di Arduino caranya cukup mudah. Anda tinggal mendeklarasikan variabel tersebut seperti pada tipe data yang lain. Tapi jangan lupa untuk memakai Arduino IDE versi 1.6.x ke atas ya. Contoh deklarasi variable string:

String s=”ini contoh variabel string’;

Variabel ini juga bisa dideklarasikan sebagai variabel global maupun variabel lokal, sama seperti tipe data yang lain.

Konversi Tipe Data Lain ke Tipe Data String

Untuk mengkonversi tipe data lain ke variabel String caranya cukup mudah, cukup dengan memanggil function ‘String’ diikuti tipe datanya. Berikut ini adalah contoh konversi data integer, float (double) dan char array ke variabel string:

int i=10;
float f=1.23;
char c[] = “saptaji.com”;
String istring = String (i);
String fstring = String (f);
String cstring = String (c);

Anda bisa menambahkan perintah Serial.println () untuk menampilkan masing-masing variabel ke jendela debug Serial Monitor.

Konversi Tipe Data String ke Tipe Data Lain

Sedangkan untuk mengkonversi dari tipe data string ke tipe data lain, caranya cukup berbeda. Anda harus memanggil function yang berbeda-beda sesuai tujuan konversi data Anda. Contoh

– mengubah variabel string ke variabel integer

Untuk mengubah variabel string ke integer Anda dapat menggunakan function string.toInt(). Contoh:

String istring = “123”
int I = istring.toInt();

– mengubah variabel string ke variabel float/double

Untuk mengubah variabel string ke float atau doube Anda dapat menggunakan function string.toFloat(). Contoh:

String long_GPS = “103.8975530”;
double longf = long_GPS.toFloat();

– mengubah variabel string ke variabel char array

Untuk mengubah variabel string ke char array Anda dapat menggunakan function string.toCharArray. Contoh:

char charbuf[15];
String s = “saptaji.com”
s.toCharArray(charbuf,15);

Dengan memanggil toCharArray() seperti pada contoh di atas, maka string ‘saptaji.com’ akan di-copy-kan ke variabel char array ‘charbuf’. Yang perlu diperhatikan adalah ukuran (size of) dari variabel char array-nya ya (contoh di atas angka ‘15’). Jangan sampai lebih kecil dari variabel string-nya

Operasi variabel String

String object menawarkan kemudahan dalam mengoperasikan variabel-variabel yang termaktub di dalamnya. Berikut ini adaah beberapa contohnya:

– menggabungkan variabel string

Salah satu favorit saya dalam mengoperasikan variabel string adalah menggunakan operator ‘+’ untuk menggabungkan (concatenate) dua (atau lebih) variabel String. Contoh:

String s1 = "saptaji";
String s2 = ".com";
String s = s1+s2;

dengan script di atas, maka variabel s akan berisi ‘saptaji.com’

– mencari fix substring di dalam variabel string

Untuk mencari substring tertentu di dalam variabel string, Anda dapat menggunakan function ‘indexOf’. Function ini sebenarnya digunakan untuk mencari index dari substring tersebut. Jika substring ditemukan, function indexOf akan mengembalikan nilai di atas angka 0 (yang menunjukkan index substring), tapi jika tidak ditemukan akan menghasilkan nilai ‘0’. Contoh:

String s = “ini adalah contoh variabel string”;
If (s.indexOf (“contoh”) > -1) {
 //substring ‘contoh’ ditemukan
}
else {
 // substring ‘contoh’ tidak ditemukan
}

Function indexOf juga dapat diset offset-nya (offset = titik mulai pencarian). Pada contoh di atas, offset pencarian tidak ditulis yang menandakan offset = 0 yang artinya pencarian dimulai dari awal string. Jika ingin pencarian dimulai dari index ke x (tidak dari awal string), maka Anda harus menulis script dengan sintaks:

s.indexOf (“contoh”, 10);

Kegunaan menggunakan offset adaah ketika Anda mencari index substring yang sama yang jumlahnya lebih dari satu pada variabel string.

– mencari substring di dalam variabel string berdasarkan index

Kalau pada contoh sebelumnya, Anda ingin mencari substring yang sudah fix, ada atau tidak dalam variabel string, contoh berikut lain penggunaannya. Contoh case-nya adalah sebagai berikut :

Ketika ada SMS masuk ke GSM modul, ada string yang diterima Arduino sebagai berikut:

+CMT: “+6281910026910″,””,”16/11/02,05:54:25+28″

Dari string di atas, Anda ingin mengambi nomor handphone pengirimnya saja, yakni +6281910026910. Nah, jika ada kasus seperti ini, Anda dapat menggunakan function substring sbb:

String s= +CMT: "+6281910026910","","16/11/02,05:54:25+28";
int ix1=s.indexOf("\"+");
int ix2=s.indexOf("\",");
pengirim=s.substring(ix1+1,ix2);
Serial.print ("pengirimnya: ");
Serial.println (pengirim);

Demikian sedikit pengetahuan tentang string object yang saya sarikan dari berbagai macam sumber dan dari pengalaman pribadi. Mungkin ada banyak function yang berkenaan dengan tipe data string yang belum ada di tutorial di atas, karena function-function di atas adalah function yang sering saya gunakan untuk mengoperasikan variabel string di Arduino. Sekali lagi jangan lupa untuk seminimal mungkin menggunakan variabel string karena akan banyak sekali menghabiskan dynamic memory (SRAM), kecuali Anda menggunakan Arduino Mega. Selamat berkarya dan semoga dapat bermanfaat buat yang membutuhkan.

0 0 votes
Article Rating

Leave a Reply

59 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
dedy

Mas,sy mau tanya,untuk merubah data string dari arduino jadi integer di delphi,di delphi nya kah atau di arduinonya mas? Mana yang lebih mudah mas? Karna sy lagi coba buat counter barang,Tolong kasih pencerahannya mas..matur nuhun mas aji.

Manisa

Mas kalo mau buat string di android untuk memanggil string di arduino gimna ya??

Ezi

Mas permisi mau tanya kalo mau kirim data array dari delphi ke arduino gimana ya? Begitu juga sebaliknya. Terima kasih sebelumnya

Wp

Mas kalau mau ngambil data dari sensor trus dikirim via email dengan koneksi wifi gmn ya Mas?

tendi

bang lok misalkan saya punya data dari sensor yang lebih dari 0 terus saya ubah menjadi nilai 1. dan di jumlahkan hasilnya dalam permenit. maksud saya saya mau menghitung berapa kali sensor itu terbaca dalam 1 menit. giaman ya?

Roukuza Kurozima

mas kalo misalnya saya punya string dengan code=1234321
saya pengen jika stringnya berupa code=xxxxx, saya bisa dapet nilai xxxxnya jika itu code= , bagaimana ya ? thanks

ade

mas klo mau merubah string to char array dua dimensi bagaimana yaa?

ade

contoh data stringnya “33 3b 3a 3c” dan “3d 34 35 3e” jadikan char array 2 dimensi mas ? saya ingin menggabungan banyak input data string ke var char array mas.

Bang igo

Slmt malem mas…mau tanya mas aji…kalo sy read data dr timbNgan dgital gmn ya mas??misalnya data dr timbangan dgital “wn-0002.89kg” dan itu kontinyu datanya dan yg mau saya ambil adalah data -2.89kg…bagaimana caranya mas…tq

Bang igo

Bisa kasi cntoh sketchnya mas??

Bang igo

selama ini sy pake serial.parsefloat..hasilnya lgsg kebaca -2.89..sdh ok utk ketelitian 10 gram dgn 2 angka dbelakang koma….rencana utk tmbngan 1gram 0.000 atau 3 angka dbelakang koma sy masi blm paham, makanya mau pake cara split diatas mas

Bang igo

Eh iya mas aji…udh ok…tq bgt mas…owh iya mas..kalo nyimpen di eeprom data misal 0.222 (3 angka belakang koma gmn mas??udh sy simpen tp yg keluar wkt di panggil cmn 2 angka belakang koma..

Eston

Maaf Pak, jika saya ingin mngirim perintah seperti “i=1” untuk menghidupkan lampu. bagaimana Pak? Karena, sejauh ini. saya hanya bisa mengirimkan hruf atau angka saja. Terima Kasih

Silent96

Nice post. Keep update yaa

randy

klw misal gini :
Float i = 122.465839234;
char a;
saya mw ambil nilai i masukkan ke char a,
supaya yang terambil full 122.46583923, gimana yah?

randy

String a = String(i);
nilai yg di ambil cuman 122.47
klw misal mw ambil full nilai di blakang koma, kyak gmn yah?

derry

bang seumpama saya ada 2 sensor yang satu analog sama digital itu kan gunakan via wifi lalu masing” sensor menggunakan float cara agar bisa meenyendirikan hasil agar tidak tercampur nilainya gimana ya ?
saya udah coba gunakan float temp1 dan float temp2 nilainya kenpa jadi satu minta saran gan ?

Abi Syarwan Rabbani

mas mau tanya kalau ngirim string dari php ke arduino gimana ya mas?
tanpa menggunakan modul ethernet, saya menggungganakan raspberry.

M. ihsaan

saya juga ada pertanyaan yang sama mas. kalo saya arduino kke raspberrynya pake modul nrf24l01

M. ihsaan

Untk protokol yang saya gunakan pada Arduno dan raspberry sama2 menggunakan SPI mas. Sya ada kendala ketika data yang dikirimkan dari arduino ke raspberry. Ketika saya jalankan lewat terminal raspberry selalu bertuliskan “Substring Not Found”.

Zaidan

Kalau sebaliknya, mau rubah char ke integer gimana ya mas?

zaidan

baik mas, sekaian kalau mau merubah char yang #$%^&*..dst ke bilangan desimal gimana mas?

Mayang artika tami

mas saya sudah ngoding di arduino IDE kendali 6 relay via sms , di coding itu pke header ‘Pstring’ dan cukup lumayan banyak juga codingan nya waktu di upload muncul tulisan “low memory available , stability problems may occur” memori sudah terpakai 80% dibantu mas gimana caranya warning itu gak muncul lgi karena ada bebrp fungsi tidak jalan saat dicoba

Mayang artika tami

Waduh saya belum ngerti mas ubah varibel global ke lokal, dan bingung jg kalo rombak hbs coding yg dibagian void loop nya , ya udah ganti ke mega aja solusinya .. Makasih ya mas pelajarannya ..

Amirullah S.

Assalamu’alaikum, Bang. Saya mau bertanya, pertama-tama kasusnya gini : Saya mengirim data keypad dari arduino ke micon yg lain (texas instruments) dengan harapan micon tersebut mengirim kembali data ke arduino dalam bentuk sinyal lain kemudian akan ditampilkan di LCD. Nah, gmn langkah2 programming nya, Bang? Soalnya sya sdh coba, tpi data dr arduino langsung tampil di lcd tanpa melalui micon yg satunya dlu. Itu, kendalanya apa ya, Bang? Maaf sblmnya mrptkan. Jika ada teman2 lain yg bsa, tolong bantu jawab, yah. Wassalam.

Amirullah S.

Asalamu’alaikum. Pak, gmana kalau kita mau nyimpen data keypad yg sdh diketik, trus data tersebut baru terkirim (tampil d SM dan LCD) setelah di enter. Sy sdh coba, tp yg tmpil malah angka 0. Katanya harus diconvert ke String dlu, sy juga sdh coba, tp masih 0 yg tampil. Ini mungkin murni kesalahan program yg saya buat. Nah, intinya Pak, gmn cara menampilkan data tersebut sesuai dengan data yg sya input (ketik) pd keypad.

Amirullah S.

Serial Monitor di arduino, Pak

Nadiya

Mantapa

Ramfat

Mas string to float tuh maksudnya gimana?

Dicky

Mas Adjie, gimana caranya meng copy satu txt file dari sd card module ke usb module ch376s pakai arduino mega 2560.

Dicky

sd cardnya ke SPI dan USB Module nya ke HardwareSerial. dua duanya nancep di mega 2560. Terima kasih sebelumnya.

59
0
Would love your thoughts, please comment.x
()
x