Memahami Serial Monitor sebagai Jendela Komunikasi dengan Otak Arduino

Barintek
0

    Bayangkan Arduino sebagai otak dari sebuah proyek, dan Serial Monitor adalah alat komunikasi yang menghubungkan otak itu dengan komputer Anda. Fitur ini memungkinkan Anda untuk "mengintip" apa yang sedang dipikirkan dan dilakukan oleh Arduino.

    Serial Monitor adalah fitur di Arduino IDE (atau software serupa) yang digunakan untuk berkomunikasi antara mikrokontroler dengan komputer melalui koneksi serial (UART/USB).


Komunikasi Dua Arah

Serial Monitor bukan hanya alat untuk melihat data, tapi juga untuk mengirim data.

  • Arduino ke Komputer (Output): Ini adalah fungsi yang paling umum. Anda bisa menggunakan perintah seperti Serial.println() dalam program Anda untuk mengirim data dari Arduino ke Serial Monitor. Data ini bisa berupa:

  1. Nilai variabel: "Suhu saat ini adalah 25.45"
  2. Status program: "Lampu LED menyala!"
  3. Data sensor: "Jarak terdeteksi: 15 cm"
  4. Pesan kesalahan (debugging): "Sensor tidak terhubung, periksa kabel."

  • Komputer ke Arduino (Input): Anda juga bisa mengetik teks di Serial Monitor dan mengirimkannya ke Arduino. Arduino kemudian dapat membaca teks tersebut menggunakan perintah seperti Serial.read(). Fungsi ini sangat berguna untuk:

  1. Kontrol interaktif: Mengirim perintah "on" atau "off" untuk menyalakan/mematikan perangkat.
  2. Pengaturan parameter: Memasukkan nilai batas suhu atau waktu tunda langsung dari komputer.


Baud Rate: Bahasa Komunikasi

    Agar komunikasi berjalan lancar, baik Arduino maupun Serial Monitor harus "berbicara" dengan kecepatan yang sama. Kecepatan ini disebut baud rate.

  1. Jika program Arduino Anda menggunakan Serial.begin(9600), maka Anda harus menyetel Serial Monitor ke 9600 juga.
  2. Jika kecepatan tidak cocok, data yang ditampilkan akan terlihat seperti karakter acak atau tidak jelas.
  3. Anda bisa meningkatkan Serial.begin(9600) lebih tinggi lagi.
Contoh penulisannya:
void setup()
{
  Serial.begin(9600);
  Serial.print("Belajar Arduino");
}

void loop()
{
   
}
    
  • Serial.begin(9600); 👉 Perintah untuk memulai komunikasi serial antara Arduino dan komputer dengan baud rate 9600 bps (bit per detik). Angka 9600 harus sama dengan pengaturan Serial Monitor di Arduino IDE. Jika berbeda, data yang muncul bisa jadi karakter aneh (korup).
  • Serial.print("Belajar Arduino");👉 Mengirim teks "Belajar Arduino" ke Serial Monitor.
  • print → hanya mencetak teks tanpa pindah baris. Kalau pakai println, maka setelah mencetak, kursor akan turun ke baris berikutnya.


Fungsi Serial yang Paling Penting

  1. Serial.begin(baudrate); → memulai komunikasi.
  2. Serial.print(data); → mencetak data ke monitor.
  3. Serial.println(data); → sama, tapi ada "enter" otomatis.
  4. Serial.read(); → membaca 1 karakter dari input.
  5. Serial.available(); → cek apakah ada data masuk.
  6. Serial.write(data); → kirim data dalam bentuk byte (bukan teks).
Contoh Di dalam Program
void setup() {
  Serial.begin(9600);
  Serial.println("Saya Belajar Arduino!");
  Serial.println("Ketik 1 karakter: ");
}

void loop() {
  if (Serial.available() > 0) {
    char data = Serial.read();
    Serial.print("Kamu kirim: ");
    Serial.println(data);
    Serial.println("Ketik 1 karakter lagi: ");
  }
}
    Ketikkan satu karakter di Massge Serial Monitor. Maka karakter yang di ketik akan dikirim ke serial monitor. Namum metode ini hanya mengirim satu karakter saja. Jika kamu ingin mengirim sebuah texts dapat ditulis seperti berikut:
String dataMasuk = "";

void setup() {
  Serial.begin(9600);
  Serial.println("Ketik sesuatu lalu tekan Enter:");
}

void loop() {
  // cek apakah ada data masuk
  if (Serial.available() > 0) {
    dataMasuk = Serial.readStringUntil('\n');
    Serial.print("Kamu kirim: ");
    Serial.println(dataMasuk);
  }
}

Kalkulator Arduino
String input = "";
float a, b, hasil;

void setup() {
  Serial.begin(9600);
  Serial.println("=== Kalkulator Arduino ===");
  Serial.println("Contoh: 12+5 atau 9*3");
  Serial.println("==========================");
}

void loop() {
  if (Serial.available() > 0) {
    input = Serial.readStringUntil('\n');

    int tambah = input.indexOf('+');
    int kurang = input.indexOf('-');
    int kali   = input.indexOf('*');
    int bagi   = input.indexOf('/');

    bool valid = true; // flag untuk cek input valid

    if (tambah > 0) {
      a = input.substring(0, tambah).toFloat();
      b = input.substring(tambah + 1).toFloat();
      hasil = a + b;
    }
    else if (kurang > 0) {
      a = input.substring(0, kurang).toFloat();
      b = input.substring(kurang + 1).toFloat();
      hasil = a - b;
    }
    else if (kali > 0) {
      a = input.substring(0, kali).toFloat();
      b = input.substring(kali + 1).toFloat();
      hasil = a * b;
    }
    else if (bagi > 0) {
      a = input.substring(0, bagi).toFloat();
      b = input.substring(bagi + 1).toFloat();
      if (b != 0) {
        hasil = a / b;
      } else {
        Serial.println("Error: pembagian dengan 0!");
        valid = false;
      }
    }
    else {
      Serial.println("Format salah! Gunakan contoh: 12+5");
      valid = false;
    }
   
    // tampilkan hasil hanya kalau valid
    if (valid) {
      Serial.print(input);
      Serial.print(" = ");
      Serial.println(hasil);
    }
  }
}


Posting Komentar

0Komentar

Posting Komentar (0)