artikel ini merupakan lanjutan dari artikel sebelumnya, yaitu “strtok di Arduino” artikel ini ditulis untuk menjawab bagaimana merubah character menjadi integer atau float. Dari pertanyaan inilah muncul ide untuk membuat artikel tentang penggunaan atoi dan atof di Arduino.
atoi adalah fungsi yang dapat digunakan untuk merubah character menjadi integer, sedangkan atof adalah fungsi yang dapat digunakan untuk merubah character menjadi float. sebuah character dapat dirubah menjadi integer atau float dengan syarat variable character tersebut harus diawali dengan operator asterisk(*) , bila tidak maka output dari atoi / atof ini error atau tidak akan sesuai.
Untuk pembuktiannya upload sketch berikut kedalam board Arduino kemudian amati perbedaannya.
char ValStr[64]; //Array untuk Menampung value String yang nantinya akan dirubah menjadi type data char
char *tok;
char *tok1; //
char *tok2; //variable dengan diawali operator asterisk(*)
char toke; //variable tanpa operator asterisk(*)
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') {
for (int i=0; i< inString.length(); i++){ ValStr[i] = inString.charAt(i); }
tok = strtok (ValStr, " ");
tok1 = strtok (NULL, " "); //isi dengan karakter pemisah
tok2 = strtok (NULL, " ");
toke = strtok (NULL, " ");
Serial.println(tok);
Serial.println(tok1);
//untuk membuktikan apakah data sudah benar di convert ke int/float
delay(atof(tok1));
Serial.println(tok2);
delay(atoi(tok2));
Serial.println(toke);
delay(atoi(toke));
inString = "";
Serial.println("atoi dan atof success, silahkan masukkan input baru");
}
}
}
pada program diatas, ditambahkan perintah
delay(atof(tok1));
delay(atoi(tok2));
delay(atof(toke));
perintah tersebut ditambahkan untuk membuktikan apakah benar character tersebut sudah dirubah menjadi integer atau float, karena kalau benar, akan ada jeda ketika serial monitor menampilkan data antara tok1, tok2 dan toke sesuai nilai yang diinputkan.
setelah sketch diatas di upload, hasil yang saya dapatkan adalah sebagai berikut:
dari Gambar diatas dapat dilihat bahwa 2 dari 3 type char yang dirubah menjadi integer dan float menampilkan angka 1000, hal tersebut dihasilkan karena variable character tersebut ditulis dengan diawali operator asterisk(*), sedangkan untuk yang ketiga (variable toke), informasi yang ditampilkan hanya huruf y bukan 1000.
Comments
Post a Comment