Notification texts go here Contact Us

Cara Membaca Input Pengguna dari Arduino Serial Monitor

Membaca data input pengguna dari serial monitor arduino dan melakukan pengolahan parse atau parsing (mengurai) data float, string, integer dan lainnya

Cara Membaca Input Pengguna dari Arduino Serial Monitor

Cara Membaca Input Pengguna dari Arduino Serial Monitor

Serial monitor biasanya hanya digunakan untuk menampilkan data dari Arduino pada monitor komputer. Tetapi juga dapat digunakan sebagai perangkat input yang mengambil input dari pengguna dan mengirimkannya ke Arduino. Ini berguna untuk membuat menu berbasis monitor serial, kalkulator dan login kata sandi, di mana pengguna diminta untuk memasukkan informasi dan Arduino melakukan tindakan berdasarkan input itu.

Pada artikel ini pertama-tama kita akan mempelajari cara mendapatkan input pengguna dari monitor serial Arduino. Kemudian kita akan melihat beberapa contoh program untuk melihat cara membuat menu, kalkulator berat, dan antarmuka login kata sandi.

Bagaimana Mendapatkan Input Pengguna dari Serial Monitor?

Untuk mendapatkan input pengguna dari monitor serial, langkah pertama adalah meminta informasi kepada pengguna. Ini bisa berupa pertanyaan seperti "berapa kali Anda ingin LED berkedip" atau "pilih opsi dari menu". Itu hanya teks untuk memberi tahu pengguna bahwa mereka harus memasukkan sesuatu. Kode untuk prompt dapat berupa fungsi Serial.print() sederhana yang mencetak pertanyaan ke monitor serial. Pengguna dapat memasukkan tipe data int, float ataupun string, tetapi Anda perlu mengetahui terlebih dahulu tipe data apa yang akan dimasukkan pengguna.

Langkah selanjutnya adalah menggunakan fungsi Serial.available() dalam loop while yang kosong. Fungsi Serial.available() mengembalikan jumlah byte yang tersedia untuk dibaca dari port serial. Ketika tidak ada input pengguna, Serial.available() akan mengembalikan nilai nol. Ketika pengguna memasukkan data dan menekan Enter, Serial.available() akan mengembalikan nilai bukan nol. Ini digunakan sebagai kondisi loop while kosong untuk membuat program menunggu sampai ada input dari pengguna:

while (Serial.available() == 0) { }

Kondisi perulangan while yang kosong adalah Serial.available()==0. Ketika tidak ada input dari pengguna, fungsi Serial.available() mengembalikan nilai nol, membuat kondisi menjadi benar. Sketsa tetap berada di dalam loop while sampai pengguna memasukkan sesuatu dan Serial.available() mengembalikan nilai bukan nol.

Langkah terakhir adalah membaca informasi yang dimasukkan oleh pengguna dan melakukan tindakan berdasarkan masukan tersebut. Untuk melakukan itu, kita harus mengurai (membaca), informasi yang disimpan dalam buffer serial. Untuk mengurai informasi yang disimpan dalam buffer serial, kita dapat menggunakan salah satu dari tiga fungsi berikut:

  • Serial.parseInt()
  • Serial.parseFloat()
  • Serial.readString()

Tipe data input informasi oleh pengguna menentukan fungsi mana yang harus Anda gunakan. Jika pengguna akan memasukkan int, gunakan Serial.parseInt(). Jika pengguna akan memasukkan float, gunakan Serial.parseFloat(). Dan jika pengguna akan memasukkan string, gunakan Serial.readString().

Sebelum fungsi-fungsi ini dapat digunakan, kita perlu mendeklarasikan variabel untuk menyimpan data yang diurai. Tipe data dari variabel tersebut harus sesuai dengan tipe data dari data input. Misalnya, untuk mengurai integer, Anda bisa mendeklarasikan variabel int yang dipanggil integerVariable dan menyetelnya sama dengan Serial.parseInt()fungsi seperti ini:

int integerVariable = Serial.parseInt();

Untuk mengurai float, Anda bisa mendeklarasikan variabel float dan menyetelnya sama dengan fungsi Serial.parseFloat() seperti ini:

float floatVariable = Serial.parseFloat();

Untuk mengurai String, Anda bisa mendeklarasikan variabel string dan menyetelnya sama dengan fungsi Serial.readString() seperti ini:

String stringVariable = Serial.readString();

Mari kita lihat bagaimana ini bekerja dengan beberapa contoh.

Bagaimana Cara Mengurai (Parse) Tipe Data Integer?

Sebagai contoh bagaimana mendapatkan bilangan bulat dari input pengguna monitor serial, mari kita lihat sketsa yang membuat menu meminta pengguna untuk memilih pengukuran dari sensor tekanan dan kelembaban udara :

int temp; int Rh; int pressure; void setup() { Serial.begin(9600); Serial.println("1. Temperature"); Serial.println("2. Humidity"); Serial.println("3. Barometric Pressure"); } void loop() { Serial.println("Which sensor would you like to read? "); while (Serial.available() == 0) { } int menuChoice = Serial.parseInt(); switch (menuChoice) { case 1: // temp sensor code goes here Serial.print("The temperature is: "); Serial.println(temp); break; case 2: // humidity sensor code goes here Serial.print("The humidity is: "); Serial.println(Rh); break; case 3: // pressure sensor code goes here Serial.print("The barometric pressure is: "); Serial.println(pressure); break; default: Serial.println("Please choose a valid selection"); } }

Untuk mempermudah, kode untuk mengontrol sensor tidak disertakan dalam sketsa ini. Tapi lihat artikel kami tentang Cara Mengatur Sensor Tekanan Barometrik BMP180 di Arduino. Setelah mengetahui cara mengatur BMP180, akan mudah untuk memasukkan kode sensor ke dalam sketsa ini.

Di bagian atas sketsa, kami mendeklarasikan beberapa variabel untuk menyimpan pembacaan sensor. Ada variabel yang disebut tempyang akan menyimpan pembacaan suhu, variabel Rhyang disebut akan menyimpan pembacaan kelembaban, dan variabel yang disebut pressure yang akan menampung pembacaan tekanan.

Di bagian setup() ini, kita mulai dengan menginisialisasi monitor serial dengan fungsi Serial.begin(). Kemudian kita memiliki beberapa fungsi Serial.print(). Ini akan mencetak opsi menu ke monitor serial. Opsi satu adalah suhu, opsi dua adalah kelembaban dan opsi tiga adalah tekanan udara.

Di bagian loop() ini, pertama-tama kami meminta pengguna untuk memasukkan pilihan menu. Jadi kami memiliki fungsi Serial.println() yang akan mencetak teks "Sensor mana yang ingin Anda baca?" ke monitor serial.

Sekarang kita hanya perlu menunggu pengguna memasukkan pilihan. Kami melakukannya dengan loop while yang kosong. Kondisi perulangan while adalah Serial.available()==0. Fungsi Serial.available()mengembalikan jumlah byte yang dikirim dari monitor serial. Fungsi mengembalikan nol ketika tidak ada data serial, sehingga sketsa tetap berada di loop sementara sampai pengguna memasukkan sesuatu. Ketika pengguna memasukkan pilihan, Serial.available()mengembalikan nilai bukan nol, sehingga sketsa akan keluar dari loop while dan melanjutkan sketsa lainnya.

Selanjutnya, kita perlu membaca data yang dimasukkan oleh pengguna, dan untuk itu kita perlu menguraikannya. Karena ini adalah menu, pengguna akan memasukkan bilangan bulat untuk membuat pilihan menu. Jadi kita perlu menggunakan Serial.parseInt(). Kami akan menyimpan data yang diuraikan dalam variabel int yang disebut menuChoice.

Pada titik ini, kami telah meminta pengguna untuk memasukkan pilihan menu. Kami sudah menunggu mereka untuk masuk seleksi. Dan kami telah menguraikan pilihan itu dan menyimpannya dalam sebuah variabel. Sekarang, yang perlu kita lakukan adalah membuat sesuatu terjadi dengan pilihan itu.

Karena ada tiga opsi menu yang berbeda, kita dapat menggunakan tiga pernyataan if yang berbeda untuk mengontrol apa yang terjadi saat pengguna memasukkan pilihan. Tetapi cara yang lebih efisien adalah dengan menggunakan pernyataan switch case. Jadi pada sketsa di atas ada pernyataan switch dengan variabel menuChoice dalam tanda kurung.

Kemudian ada tiga pernyataan kasus yang berbeda yakni kasus 1, kasus 2 dan kasus 3. Jika pengguna memasukkan 1, sketsa akan mengeksekusi kode dalam pernyataan kasus pertama dan mencetak pembacaan dari sensor suhu. Jika pengguna memasukkan 2, sketsa akan mengeksekusi kode dalam pernyataan kasus kedua, yang mencetak pembacaan kelembaban dari sensor. Jika pengguna memasukkan 3, sketsa akan mengeksekusi kode dalam pernyataan kasus ketiga, yang mencetak pembacaan tekanan barometrik ke monitor serial.

Jika pengguna memasukkan nomor selain satu, dua, atau tiga, kita dapat menggunakan pernyataan default untuk mencetak pesan kesalahan yang meminta mereka memasukkan nomor yang valid. Dalam sketsa di atas, jika pernyataan default dijalankan, beberapa teks yang mengatakan "Silakan pilih pilihan yang valid" dicetak ke monitor serial.

Bagaimana Cara Mengurai (Parse) Tipe Data Float

Sekarang mari kita lihat contoh cara mendapatkan tipe data float dari pengguna. Sketsa ini adalah kalkulator yang akan mengubah berat dalam kilogram menjadi berat dalam pound:

void setup() { Serial.begin(9600); Serial.println("**** Kilograms to pounds calculator ****"); } void loop() { Serial.print("Please enter weight in kg: "); while (Serial.available() == 0) { } float weightKg = Serial.parseFloat(); Serial.println(weightKg); float weightLbs = weightKg * 2.2046; Serial.print("Weight in pounds: "); Serial.println(weightLbs); }

Di bagian setup() ini, pertama-tama kita menginisialisasi monitor serial. Kemudian kami mencetak beberapa teks yang mengatakan "Kalkulator kilogram ke pon".

Di bagian loop() tersebut, kami meminta informasi kepada pengguna dengan mencetak "Silakan masukkan berat dalam kg:".

Kemudian kita memiliki perulangan while yang kosong dengan kondisi Serial.available()==0, sehingga sketsa akan menunggu sampai pengguna memasukkan angka.

Sekarang, karena perhitungan kilogram ke pound dapat menghasilkan bilangan pecahan, kami mendeklarasikan variabel weightKg sebagai pelampung. Kemudian kita atur sama dengan fungsi Serial.parseFloat(). Selanjutnya kita print variabel weightKg tersebut ke serial monitor.

Sekarang kita melakukan perhitungan matematika untuk mengonversi dari kilogram ke pound. Ada 2.2046 pound dalam satu kilogram, jadi kita dapat mengalikan variabel weightKg dengan 2.2046 untuk mendapatkan pound dan menyimpan nilai itu dalam variabel float baru yang disebut weightLbs. Kemudian kita cetak serial beberapa teks yang mengatakan "Berat dalam pound: ", diikuti oleh weightLbsvariabel.

Bagaimana Cara Mengurai (Parse) Tipe Data String

Sekarang mari kita lihat bagaimana bekerja dengan input string. Sketsa ini akan meminta pengguna untuk memasukkan kata sandi. Jika kata sandi benar, itu akan mencetak "kata sandi benar". Jika kata sandi salah, itu akan mencetak "kata sandi salah":

String password = "ABCDEF"; void setup() { Serial.begin(9600); } void loop() { Serial.println("Please enter your password: "); while(Serial.available() == 0){ } String input = Serial.readString(); if(input == password){ Serial.println("Password correct"); } else Serial.println("Password incorrect"); }

Hal pertama yang kita lakukan adalah menentukan kata sandi. Di bagian atas sketsa ada variabel string yang disebut password yang disetel sama dengan kata sandi yang akan digunakan. Dalam hal ini adalah ABCDEF.

Di bagian setup() ini kami menginisialisasi monitor serial dengan Serial.begin(9600);.

Di bagian loop() tersebut, pertama-tama kita menggunakan fungsi Serial.println() untuk mencetak beberapa teks yang mengatakan "Silakan masukkan kata sandi Anda: ". Kemudian ada loop while kosong dengan syarat Serial.available() == 0, untuk membuat sketsa menunggu pengguna memasukkan kata sandi.

Nilai yang disimpan dalam variabel password adalah string, jadi kita perlu menggunakan Serial.readString()untuk membaca string dari buffer serial. Output dari fungsi readString() disimpan dalam variabel string lain yang disebut input.

Sekarang kita hanya perlu membandingkan kata sandi yang disimpan dalam variabel input dengan kata sandi yang didefinisikan dalam sketsa. Ini adalah tempat yang baik untuk pernyataan if else. Kondisi dari pernyataan if adalah input == password. Jika kondisi benar, sketsa akan masuk ke body dan menjalankan fungsi Serial.println() untuk mencetak “password correct” ke serial monitor. Di dalam pernyataan if adalah tempat Anda meletakkan kode yang bereaksi terhadap kata sandi yang benar. Misalnya, alih-alih mencetak teks ke monitor serial, Anda dapat mengganti pin digital tinggi untuk menyalakan aktuator untuk membuka kunci pintu.

Jika kata sandi yang dimasukkan oleh pengguna tidak cocok dengan kata sandi yang ditentukan dalam sketsa, pernyataan else akan dijalankan. Di dalam pernyataan else adalah fungsi Serial.println() yang akan mencetak "kata sandi salah" ke monitor serial.



Sumber: Circuit Basics

Posting Komentar

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.