Mengenal Fungsi map() pada Arduino
Deskripsi Singkat
Fungsi map() adalah fungsi pada Arduino yang berfungsi untuk memetakan ulang suatu nilai (angka) dari rentang satu ke dalam rentang lainnya. Artinya, nilai fromLow akan dipetakan ke toLow , nilai fromHigh ke toHigh , nilai di antara ke nilai di antaranya, dll. Coba lihat gambar di bawah ini, kurang lebih begitu cara fungsi map() bekerja.
Contoh Penggunaan Fungsi map() |
Fungsi map() berbeda dengan fungsi constrain(), dimana fungsi map() tidak membatasi nilai ke dalam rentang nilai karena nilai yang berada di luar rentang nilai juga diproses. Jika ingin memetakan sekaligus membatasi nilai ke dalam rentang nilai, kedua fungsi itu bisa digunakan secara bersamaan. Untuk melihat perbedaan tersebut dapat melihat contoh di bawah ini.
void setup() {
Serial.begin(9600);
delay(1000);
for(int i = 0; i < 60; i++){
int a = map(i,0,50,0,25);
int b = constrain(i,0,25);
Serial.print("nilai aktual : ");
Serial.print(i);
Serial.print(" map() : ");
Serial.print(a);
Serial.print(" constrain() : ");
Serial.println(b);
delay(100);
}
for(int i = 60; i > 0; i--){
int a = map(i,0,50,0,25);
int b = constrain(i,0,25);
Serial.print("nilai aktual : ");
Serial.print(i);
Serial.print(" map() : ");
Serial.print(a);
Serial.print(" constrain() : ");
Serial.println(b);
delay(100);
}
}
void loop() {
}
Hasil:
Fungsi map() memungkinkan batas bawah dari salah satu rentang lebih besar atau lebih kecil dari batas atas sehingga fungsi map() tersebut dapat digunakan untuk membalikkan rentang angka, misalnya.
y = map(x, 1, 50, 50, 1);
Fungsi map() juga dapat memproses angka negatif, berikut contohnya.
y = map(x, 1, 50, 50, -100);
Sintaksis
map(value, fromLow, fromHigh, toLow, toHigh);
Penjelasan Sintaksis
Fungsi map() memiliki 5 parameter yaitu value, fromLow, fromHigh, toLow dan toHigh. Berikut penjelasannya.
- value = nilai yang akan dipetakan.
- fromLow = batas bawah nilai awal.
- fromHigh = batas atas nilai awal.
- toLow = batas bawah rentang target nilai.
- toHigh = batas atas rentang target nilai.
Nilai Kembalian
Nilai yang dikembalikan oleh fungsi map() adalah nilai yang telah dipetakan.
Contoh Penggunaan Fungsi map()
Penggunaan fungsi map() sangat luas, salah satunya adalah memetakan pembacaan nilai analog 10 bit (0-1023) menjadi 8 bit (0-255).
Fungsi map() menggunakan jenis data integer sehingga pemetaan nilai desimal
tidak dianjurkan.
Pada contoh ini kita membutuhkan Potensiometer (10K Ohm) sebagai sensor yang digunakan dan Arduino Uno sebagai mikrokontroler.
Skematik:
Skematik Contoh Penggunaan Fungsi Map |
Cobalah unggah program di bawah ini pada Arduino Anda masing-masing dan perhatikan keluaran pada serial monitor.
/* Map an analog value to 8 bits (0 to 255) */
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(A0);
val = map(val, 0, 1023, 0, 255);
Serial.print("Output fungsi map() : ");
Serial.println(val);
}
Hasil yang diharapkan pada Serial Monitor.
Fungsi map() Untuk Jenis Data Float
Jika ingin memetakan data berjenis float gunakan kode program di bawah ini.float f_map(float x, float x1, float x2, float y1, float y2){ return (x - x1) * (y2 - y1) / (x2 - x1) + y1; }
Contoh penggunaannya di sini kita akan memetakan data berjenis float dari 0-1023 menjadi 0-100.
const int potPin = A0; void setup (){ Serial.begin(9600); } void loop(){ float pot = analogRead(potPin); float value = f_map(pot, 0, 1023 , 0, 100); Serial.println(value); delay(300); } float f_map(float x, float x1, float x2, float y1, float y2){ return (x - x1) * (y2 - y1) / (x2 - x1) + y1; }
Gabung dalam percakapan