Pengenalan Serial Monitor dan Input I/O
Pada tutorial kali ini kita akan berkenalan dengan feature Serial Monitor, yang akan cukup sering digunakan nanti, terutama untuk debugging. Sesuai nama nya, Serial Monitor adalah sebuah feature yang dimiliki oleh software Arduino IDE untuk memonitor atau memantau data yang tersedia atau dikeluarkan oleh microcontroller via komunikasi serial. Dengan Serial Monitor kita bisa mengetahui apa yang dituliskan di port serial dan ditampilkan pada jendela Serial Monitor.
Komunikasi serial pada board UNO dilakukan pada port serial yang terletak pada pin 0 dan pin 1, atau melalui USB. Board UNO, Nano, ProMini, Lilypad memiliki hanya 1 buah serial yang terletak pada pin 0 dan 1 dan digunakan juga sebagai komunikasi melalui USB
Untuk mencoba Serial Monitor kali ini, wiring rangkaian yang digunakan hanya board Uno yang terkoneksi ke komputer via USB, tanpa komponen atau modul apapun.
Bukalah file ESSENTIALS_Serial_Monitor_1.ino (download di link ini) dan upload ke board Uno. Setelah di upload, tidak akan tampak apa-apa pada board karena pada saat ini kita tidak mengontrol hardware apapun.
Untuk memunculkan jendela Serial Monitor, klik icon yang berada di pojok kanan atas jendela Arduino IDE. Pastikan juga board Arduino sudah terkoneksi ke komputer melalui kabel USB.
Pada jendela Serial Monitor, akan tampak data seperti gambar di bawah ini
Pastikan sudah menggunakan baud rate 115200 di bagian pojok kanan bawah jendela serial monitor agar sama dengan kecepatan baud rate yang kita tentukan dalam sketch
Mari kita bahas sketch ESSENTIALS_Serial_Monitor_1.ino
/* TUTORIAL SERIAL MONITOR 1 ecadio.com*/int x = 1; void setup() { Serial.begin(115200);//memulai inisiasi komunikasi serial dengan baud rate 115200 bps Serial.println("Mencoba Serial Monitor");}void loop() { Serial.print("Ini loop ke : "); Serial.println(x); x++; delay(2000);}
Pada bagian sebelum setup(), ada baris perintah yang menyimpan variabel memori x dengan nilai 1. Variabel ini akan kita gunakan dalam perintah dalam loop nanti
int x = 1;
Pada pemrograman Arduino, kita tidak bisa menyimpan data variabel tanpa mendeklarasikan jenis tipe data variabel tersebut. Oleh karena itu kita menulis int di depan variabel x untuk mendeklarasikan bahwa variabel x berjenis integer
Pada bagian setup(), untuk bisa menggunakan komunikasi serial seperti menampilkan data pada serial Monitor, gunakan perintah Serial.begin(115200); untuk memerintahkan untuk memulai komunikasi serial dengan baudrate 115200
Syntax dari Serial.begin() adalah
Serial.begin(baud_rate);
Dimana baud rate adalah nilai kecepatan baud rate serial yang akan kita gunakan. Nilai yang bisa digunakan adalah ada cukup banyak pilihan, yang bisa dilihat pada jendela Serial Monitor di bagian pojok kanan bawah, namun nilai yang biasa digunakan adalah 9600 untuk kecepatan transfer data yang agak lambat dan 115200 untuk kecepatan cukup tinggi.
Perintah selanjutnya adalah Serial.println(). Serial.println() kita gunakan untuk menuliskan data yang akan muncul di jendela Serial Monitor.
Serial.println("Mencoba Serial Monitor");
Pada baris perintah diatas, kita akan memunculkan tulisan “Mencoba Serial Monitor” pada jendela Serial Monitor. Tulisan tersebut hanya akan muncul sekali saat board dinyalakan, karena perintah ditulis di bagian setup().
Baris perintah berikutnya adalah di bagian loop().
Serial.print("Ini loop ke : ");Serial.println(x);
Baris perintah tersebut menulis tulisan “Ini loop ke : “ yang dilanjutkan dengan menulis nilai variabel x. Saat awal di eksekusi, nilai x adalah 1, karena kita telah menyimpan integer 1 sebelum nya.
Apa perbedaan Serial.print() dengan Serial.println()? Perbedaan nya adalah setelah perintah Serial.print(), tulisan selanjutnya setelah Serial.print() akan ditampiilkan pada posisi langsung sebelah data terakhir. Sedangkan pada Serial.println(), data akan ditampilkan pada baris baru setelah data pada Serial.println() di tampilkan.
x++;
Baris perintah tersebut menambahkan nilai x dengan 1, sehingga nilai x akan menjadi 2. Nilai 2 ini akan ditampilkan pada loop berikutnya, yang kemudian akan ketemu baris x++ lagi, yang akan ditambahkan 1 lagi, demikian seterus nya
delay(2000);
Perintah delay 2 detik tersebut dimaksudkan agar data yang tampil di Serial Monitor tidak tampil terlalu cepat, tapi ada jeda setiap 2 detik
TUTORIAL SERIAL MONITOR 2
Sama seperti tutorial sebelum nya, untuk mencoba Serial Monitor kali ini, wiring rangkaian yang digunakan hanya board Uno yang terkoneksi ke komputer via USB, tanpa komponen atau modul apapun. Pada kesempatan kali kini kita akan mencoba menggunakan Serial Monitor untuk menampilkan nilai yang diperoleh pada pin I/O.
Bukalah file ESSENTIALS_Serial_Monitor_2.ino (bisa di download di link ini) dan upload ke board Uno. Setelah di upload, tidak akan tampak apa-apa pada board secara hardware karena pada saat ini kita tidak menambahkan hardware apapun.
Untuk memunculkan jendela Serial Monitor, kembali klik icon yang berada di pojok kanan atas jendela Arduino IDE. Pastikan juga board Arduino sudah terkoneksi ke komputer melalui kabel USB.
Pada jendela Serial Monitor, akan tampak data seperti gambar di bawah ini
Pastikan sudah menggunakan baud rate 115200 di bagian pojok kanan bawah jendela serial monitor agar sama dengan kecepatan baud rate yang kita tentukan dalam sketch
Mari kita bahas sketch ESSENTIALS_Serial_Monitor_2.ino
/*
TUTORIAL SERIAL MONITOR ARDUINO
MENAMPILKAN NILAI DARI SEBUAH PIN
ecadio.com
*/
void setup() {
Serial.begin(115200);//memulai inisiasi komunikasi serial dengan baud rate 115200 bps
Serial.println("Mencoba Serial Monitor 2");
pinMode(A5,INPUT); //set pin Analog 5 atau A5 menjadi input
}
void loop() {
int nilai = analogRead(A5);
Serial.print("Nilai dari A5 :");
Serial.println(nilai);
delay(1000);
}
Pada bagian setup(), untuk bisa menggunakan komunikasi serial seperti menampilkan data pada serial Monitor, gunakan perintah
Serial.begin(115200);
Syntax dari Serial.begin() adalah
Serial.begin(baud_rate);
Dimana baud rate adalah nilai kecepatan baud rate serial yang akan kita gunakan. Nilai yang bisa digunakan adalah ada cukup banyak pilihan, yang bisa dilihat pada jendela Serial Monitor di bagian pojok kanan bawah, namun nilai yang biasa digunakan adalah 9600 untuk kecepatan transfer data yang agak lambat dan 115200 untuk kecepatan cukup tinggi.
Perintah selanjutnya adalah Serial.println(). Serial.println() kita gunakan untuk menuliskan data yang akan muncul di jendela Serial Monitor.
Serial.println("Mencoba Serial Monitor 2");
Pada baris perintah diatas, kita akan memunculkan tulisan Mencoba Serial Monitor 2 pada jendela Serial Monitor. Tulisan tersebut hanya akan muncul sekali saat board dinyalakan, karena perintah ditulis di bagian setup().
Selanjutnya terdapat baris perintah untuk memberi intruksi ke mikrokontroller bahwa kita akan mengambil nilai dari sebuah pin, atau memberlakukan sebuah pin sebagai INPUT.
pinMode(A5,INPUT); //set pin Analog 5 atau A5 menjadi input
Berbeda dengan tutorial led sebelum nya, dimana kita memperlakukan pin-pin yang terhubung dengan led-led sebagai OUTPUT (karena kita akan memberikan tegangan 5V saat HIGH atau 0V saat LOW), pada pin kali ini kita memerintahkan sebagai INPUT, karena kita akan mengambil atau menangkap nilai tegangan yang ada di pin tersebut. Di contoh ini kita akan mengambil nilai tegangan dari pin analog 5 (A5), yang walaupun pada pin tersebut tidak terhubung ke alat apapun namun akan terdapat tegangan yang berubah-ubah saking sensitif nya mikrokontroller, sehingga bisa kita ambil untuk di tampilkan.
Pin analog bisa memberikan nilai antara 0 sampai 1023, tergantung tegangan yang di terima oleh pin tersebut. Sedangkan pada pin digital hanya akan memberikan nilai 0 (LOW) atau 1 (HIGH), tergantung tegangan yang diterima pin digital tersebut. Jika pin digital menerima tegangan diatas 3V maka akan dianggap 1 atau HIGH. Begitupun dengan jika menerima tegangan dibawah 3V akan dianggap 0 atau LOW. Pada board UNO terdapat 14 pin (pin 0 s/d pin 13) digital dan 5 buah pin analog (A0 s/d A5).
Pada tutorial ini pin yang kita gunakan adalah pin A5 yang merupakan pin analog sehingga nilai yang akan muncul antara 0 sampai 1023.
Baris perintah berikutnya adalah di bagian loop().
int nilai = analogRead(A5);
Pada baris tersebut kita memerintahkan untuk menangkap nilai dari A5 dengan perintah analogRead() dan menyimpan nya di variabel “nilai” yang memiliki jenis data integers (int)
Nilai yang tertangkap tersebut dan telah disimpan ke variabel “nilai”, kemudian akan ditampilkan pada baris berikut nya :
Serial.print("Nilai dari A5 :");
Serial.println(nilai);
Apa perbedaan Serial.print() dengan Serial.println()? Perbedaan nya adalah setelah perintah Serial.print(), tulisan selanjutnya setelah Serial.print() akan ditampiilkan pada posisi langsung sebelah data terakhir. Sedangkan pada Serial.println(), data akan ditampilkan pada baris baru setelah data pada Serial.println() di tampilkan.