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
Tidak ada komentar:
Posting Komentar
Selamat berinovasi :D Salam berbagi..