Tutorial #7: Fungsi Mapping dan Analog Input

Dalam Tutorial ini, anda akan pelajari bagaimana menggunakan Fungsi MAPPING dalam Arduino IDE. Fungsi MAPPING adalah satu fungsi basic yang mempunyai penggunaan yang sangat meluas terutamanya dalam memanipulasi data.

Walaupun MAPPING adalah fungsi basic, tapi kami pasti, anda tentu akan menggunakannya dalam hampir semua project-project Arduino anda tidak kira yang simple mahupun yang complicated.

map(sumber data, dari-LOW, dari-HIGH, ke-LOW, ke HIGH)

Mapping, adalah fungsi yang akan mengubah satu RANGE data, kepada RANGE data yang baru.

Sebagai contoh, kita lihat input data dari Analog Input Potentiometer.
Kita tahu, range data yang akan didapati, pastilah dari 0~1023.

Dengan data tersebut, kita mungkin mahu mengawal kelajuan satu motor yang dipandu oleh Motor Controller. Kebanyakan Motor Controller memerlukan input kawalan PWM, dan PWM Output dari pin-pin PWM Arduino dapat dikawal dengan memberikan value dari 0~255 dalam coding.

Oleh itu, kita perlu menggubah output 0~1023 tadi, kepada nilai 0~255 untuk mengawal Motor Controller. Mungkin andaboleh menggunakan formula matematik yang sedikit complicated, seperti;

dataSensor = analogRead(A1);
dataBaru = dataSensor / (1023/255);
// 1023/255 = 4.011
// dataBaru = 1023 / 4.011
// dataBaru = 255

Dengan formula di atas, anda mungkin dapat mengubah data 0~1023 tersebut kepada data baru 0~255. Dan setiap kali ada Range-Baru yang ingin dibuat, anda perlu membuat kiraan formula sekali-lagi.

Disinilah fungsi MAPPING memudahkan kerja coding kita.

dataSensor = analogRead(A1);
dataBaru = map(dataSensor, 0, 1023, 0, 255);

Di atas merupakan coding  MAPPING untuk menggantikan coding matematik di permulaan tadi. Algorythm yang digunakan adalah algortyhm map().

Penerangan mudah bagi fungsi mapping adalah seperti berikut;

dataBaru = map(inputData, minimumLama, maksimumLama, minimumBaru, maksimumBaru);

Untuk memahami dengan lebih jelas, kita teruskan dengan Tutorial ini, dan anda boleh rujuk artikel mengenai mapping dari Arduino.cc melalui URL di bawah:

Teruskan dengan Tutorial ini untuk memahami dengan lebih lanjut mengenai ADC dan Analog Input.

Dalam tutorial ini, komponen-komponen berikut perlu disediakan:

  1. Arduino Uno (atau yang lain) (1 unit)
  2. Jumper cable (3 unit)
  3. Potentiometer 10k ohm (1 unit)
  4. Breadboard (1 unit)

LANGKAH #1: SAMBUNGAN LITAR

Sambungkan litar anda seperti gambarajah berikut:

Analog Input - DIAGRAM

Pastikan pin tengah Potentiometer disambung pada Analog Pin.

LANGKAH #2: CODING/SKETCH 

Copy sketch di bawah dan pastekan dalam Arduino IDE anda.

//Tutorial #7 : Fungsi Mapping & Analog Input
//Code disediakan oleh MatGyver.my

int dataSensor;
int dataBaru;
//declare variable untuk simpan data input Sensor

void setup() {
// masukkan code setup di sini, Void Setup berjalan sekali sahaja

 Serial.begin(9600);
 //mulakan connection Serial pada Baud Rate 9600
 
 pinMode(A1, INPUT); //Analog Input Potentiometer
 //declare pin A1 sebagai INPUT

 delay(100);
 //letak sedikit delay untuk Serial bermula dengan stabil

}//penutup Void Setup

void loop() {
// masukkan code utama di sini, untuk program yang berulang

 dataSensor = analogRead(A1);
 dataBaru = map(dataSensor, 0, 1023, 0, 255);
 //map dan convert dataSensor dari range 0~1023
 //kepada dataBaru range 0~255

 Serial.print(" dataBaru = ");
 Serial.println(dataBaru);
 //printkan value dataBaru dalam Serial Monitor

 delay(20);//delay 20milisecond adalah yang terlaju
           //Serial print juga akan lebih stabil
           //elakkan menggunakan delay yang lebih rendah

} //penutup Void Loop

Atau, anda boleh download file sketch .ino untuk tutorial ini di URL berikut:

Setelah sketch diupload, buka Serial Monitor.

Paparan Serial Monitor akan kelihatan seperti di bawah:

Serial Monitor - Fungsi Mapping

Berbeza dengan Tutorial 6 sebelum ini yang memaparkan nilai dari 0~1023, kali ini, selepas penggunaan Fungsi-Mapping, paparan data adalah dari 0~255.

Dengan teknik manipulasi data seperti ini, anda sudah boleh mengawal PWM output dengan potentiometer, dan juga jika di-map-kan data tersebut kepada 0~180, anda sudah boleh mengawal Servo motor.

Teruskan dengan Tutorial #8 melalui URL di bawah:

Senarai Tutorial asas Arduino MatGyver.my :

Tinggalkan Jawapan

Masukkan butiran anda dibawah atau klik ikon untuk log masuk akaun:

WordPress.com Logo

Anda sedang menulis komen melalui akaun WordPress.com anda. Log Out /  Tukar )

Google+ photo

Anda sedang menulis komen melalui akaun Google+ anda. Log Out /  Tukar )

Twitter picture

Anda sedang menulis komen melalui akaun Twitter anda. Log Out /  Tukar )

Facebook photo

Anda sedang menulis komen melalui akaun Facebook anda. Log Out /  Tukar )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.