Pada bagian ini diberikan contoh untuk mengendalikan gerak motor servo sesuai dengan input dari flex sensor. Arduino akan membaca input analog dari flex sensor, kemudian hasilnya akan diubah ke rentang 0-180 (rentang derajat motor servo yang digunakan). Hasil konversi rentang tersebut menjadi nilai sudut pergerakan motor servo dan juga nilainya akan ditampilkan pada serial monitor Arduino IDE. Gambar 1.1 menunjukkan rangkaian untuk flex sensor, motor servo dan Arduino UNO.
Gambar 1.1 Nilai Analog Keadaan Ditekuk 90 derajat |
Hardware yang dibutuhkan :
1. Arduino UNO
2. Flex Sensor
3. Resistor 10K
4. Motor servo MG90S
5. Kabel jumper
Keterangan Rangkaian dan Pemrograman :
1. Hubungkan satu kaki resistor 10K dengan pin VCC 5V Arduino.
2. Hubungkan satu kaki lain dari resistor 10K ke satu kaki flex sensor dan ke pin analog A0.
3. Hubungkan satu kaki lain dari flex sensor ke pin GND Arduino UNO.
4. Hubungkan pin sinyal (kabel warna oranye) dari motor servo MG90S ke pin digital 9 Arduino UNO.
5. Hubungkan pin VCC (kabel warna merah) dari motor servo MG90S ke pin VCC 5V Arduino.
6. Hubungkan pin GND (kabel warna hijau) dari motor servo MG90S ke pin GND Arduio UNO.
7. Setelah selesai membuat rangkaian, langkah selanjutnya adalah membuat sketch program pada software Arduino IDE. Sketch untuk rangkaian ini ditunjukkan oleh contoh program Prog1.1.
8. Compile sketch yang telah dibuat.
9. Hubungkan Arduino UNO dengan komputer menggunakan kabel USB dan upload ke Arduino yang digunakan.
Contoh Program : Prog1.1. Flex Sensor Kendali Servo
Penjelasan :
1. Pada bagian awal program disertakan library terkait penggunaan motor servo, yaitu library Servo.h
2. Baris selanjutnya terdapat perintah pembuatan instance untuk Servo dengan nama myservo.
3. Selanjutnya terdapat deklarasi alias nama untuk pin analog A0 dengan nama pinFlex.
4. Selanjutnya, diinisialisasikan variabel dengan nama flexsensor dan variabel sudut. Kedua variabel tersebut bertipe integer.
5. Di dalam void setup terdapat perintah untuk pengaturan komunikasi serial dengan baud rate sebesar 9600bps.
6. Selanjutnya terdapat perintah pengaturan pin yang akan digunakan untuk mengontrol servo, yaitu pin digital 9.
7. Pada baris selanjutnya program masuk ke dalam void loop yang akan terus berulang tanpa henti.
8. Di dalam void loop terdapat perintah pembacaan data analog pada pinFlex (pin analog A0) yang kemudian hasilnya akan disimpan ke variabel flexsensor.
9. Pada baris selanjutnya, nilai dari variabel flexsensor akan diubah yang asalnya berada di rentang 306 - 448 ke rentang 0 -180.
10. Nilai 306 di dapat dari percobaan program 1.1 ketika flex sensor ditekuk 90 derajat dan nilai 448 di dapat ketika flex sensor berada pada keadaan tegak lurus. Karena rentang nilai 306 ke 448 ini sangat sedikit maka rentangnya dapat diubah ke rentang 0-180 dengan menggunakan fungsi map.
11. Hasil perubahan dengan fungsi map ini disimpan ke variabel sudut.
12. Baris selanjutnya adalah perintah untuk menuliskan nilai variabel sudut ke pin digital 9 dengan menggunakan perintah "myservo.write (sudut)".
13. Selanjutnya, terdapat perintah untuk mencetak string "Flex sensor = " disertai isi dari variabel flexsensor, string "Sudut Servo = " dan isi variabel sudut ke serial monitor Arduino IDE.
14. Baris terakhir dari void loop adalah perintah untuk selang waktu selama 2 ms.
Setelah meng-upload program 1.1 ke Arduino, buka serial monitor kemudian perhatikan posisi dari servo dan keadaan flex sensor seperti pada gambar 1.2.
Gambar 1.2 Rangkaian Arduino, Servo dan Flex Sensor |
Tekuk flex sensor sehingga servo akan bergerak aktif dan perhatikan nilai yang tampil pada saat flex sensor yang digunakan tidak tertekuk sama sekali dan saat flex sensor tertekuk. Ketika flex sensor tidak ditekuk atau dalam keadaan tegak lurus, maka motor servo akan bergerak ke sudut 180 derajat seperti pada gambar 1.3
Gambar 1.3 Nilai Analog Flex Sensor dan Sudut Servo |
0 Komentar