Mengenal Fungsi constrain() pada Arduino

Fungsi constrain() pada Arduino adalah sebuah fungsi yang berfungsi untuk memberikan batasan (batas atas dan batas bawah) dari sebuah nilai.

Deskripsi Singkat

Fungsi constrain() pada Arduino adalah sebuah fungsi yang berfungsi untuk memberikan batasan (batas atas dan batas bawah) dari sebuah nilai. Sehingga jika kita menggunakan fungsi constrain() pada sebuah variabel misalnya, nilai dari variabel tersebut akan selalu berada di dalam range yang telah kita tentukan. Contoh penggunaan fungsi constrain() misalnya untuk membatasi  pembacaan nilai sensor ultrasonik, membatasi sudut servo pada robot dan lainnya.

Sintaksis

Sintaksis dari fungsi constrain() dapat dilihat di bawah ini. 

constrain(x,a,b)

Penjelasan Sintaksis

Seperti yang kita lihat, fungsi constrain() memiliki 3 parameter, yakni x, a, b. Berikut penjelasan dari pada parameter-parameter tersebut.

x = Nilai yang ingin diberi batas, menerima semua jenis data.
a = Nilai batas bawah, menerima semua jenis data.
b = Nilai batas atas, menerima semua jenis data.

Nilai Kembalian

Nilai yang dikembalikan saat menggunakan fungsi constrain() ada 3 tergantung dari nilai parameter x. berikut penjelasannya.

  1. Fungsi akan mengembalikan nilai x apabila nilai x berada di antara nilai a dan b.
  2. Fungsi akan mengembalikan nilai a apabila nilai x berada di bawah nilai a.
  3. Fungsi akan mengembalikan nilai b apabila nilai x berada di atas nilai b

Contoh Penggunaan Fungsi constrain()

Sekarang kita akan mengamati sebuah contoh penggunaan fungsi constrain(), yaitu membatasi nilai sebuah variabel. Cobalah untuk mempraktikkan kode program di bawah ini pada papan Arduino masing-masing, kemudian amati serial monitor.

Penting: Jangan pernah menggunakan fungsi di dalam fungsi constrain() karena nilainya akan bermasalah. Contoh sintaksis yang salah seperti int constrainedInput = constrain (Serial.parseInt(), minimumValue, maximumValue);.

/*
   M. Habib Al Khairi
   Blog: https://www.mahirelektro.com
   Judul: Contoh penggunaan fungsi constrain();
*/

const int batas_bawah = 20;
const int batas_atas = 100;
int input = 0;

void setup() {
  Serial.begin(9600);
  delay(2000);
}

void loop() {
  for (int i = 0; i < 120; i++) {
    input++;
    Serial.print("nilai sebenarnya: ");
    Serial.print(input);
    Serial.print(" sudah dibatasi: ");
    Serial.println(constrain(input, batas_bawah, batas_atas));
    delay(100);
  }

  for (int i = 0; i < 120; i++) {
    input--;
    Serial.print("nilai sebenarnya: ");
    Serial.print(input);
    Serial.print(" sudah dibatasi: ");
    Serial.println(constrain(input, batas_bawah, batas_atas));
    delay(100);
  }
}

Penjelasan

Terdapat 3 variabel pada contoh kode program di atas, yaitu input, batas_bawah dan batas_atas. Jika program tersebut dijalankan, maka nilai input akan tetap berada di dalam range antara batas_bawah (20) dan batas_atas (100). 

Fungsi constrain() Pada Arduino

Apabila nilai variabel input di antara nilai batas_bawah dan batas_atas maka nilai yang dikembalikan oleh fungsi constrain() adalah nilai variabel input itu sendiri (tidak berubah). 

Namun apabila nilai variabel input lebih rendah dari pada batas_bawah (20) maka nilai yang dikembalikan oleh fungsi constrain() adalah nilai  dari batas_bawah, yaitu 20. 

Kemudian apabila nilai variabel input lebih tinggi dari pada batas_atas (100) maka nilai yang dikembalikan oleh fungsi constrain() adalah nilai batas_atas, yaitu 100. 

Tantangan

Cobalah buat kode program untuk membatasi sudut pada sebuah servo menggunakan fungsi constrain().

Jawaban: Cara Membatasi Sudut Motor Servo Arduino

Fungsi Matematika Arduino yang Lain

Penghobi Elektronika