Saturday, October 27, 2018

Argument pada Python (Studi Kasus Pengaturan motor Servo)

Pendahuluan

pada artikel sebelumnya sudah ada  pembahasan mengenai script Python untuk menggerakan motor Servo. namun penggunaannya sebatas berputar pada sudut derajat yang sudah ada di script tersebut. kemudian pertanyaannya bagaimana menggunakan script Python untuk memutarkan motor servo sekian derajat dengan info derajat dikirim dari argument saat script Python tersebut dijalankan. misalkan saat menjalankan script Python seperti dibawah ini :

sudo python servo.py 100
dimana angka 100 merupakan argument yang akan dikirimkan ke dalam script Python untuk diolah menjadi besaran lebar pulsa PWM untuk menggerakan motor servo. dengan ini kita cukup membuat satu script Python kemudian kita bisa memutar motor servo tersebut berapa deraja dengan menganti besaran argument pada saat menjalankan script Python tersebut.

Argument pada Python

Secara sederhana argument adalah nilai yang diberikan kepada sebuah fungsi, saat kita memanggil fungsi tersebut. kemudian nilai argument tersebut akan diberikan ke parameter fungsi tersebut. secara sederhana argument merupakan sebuah nilai misal 5, "hello" dan parameter sebuah simbol misal x, y dan lain sebagainya. contoh misal terdapat fungsi luas_segita dengan parameter alas dan tinggi maka dapat ditulis luasSegita(a, t) a dan t merupakan parameter untuk fungsi luasSegitiga, kemudian fungsi luasSegitiga dipanggil di fungsi utama seperti berikut luasSegitiga(4, 5) angka atau nilai 4 dan 5 merupakan nilai yang diberikan ke a dan t.

untuk menggunakan argument pada saat menjalankan script Python pertama-tama kita perlu meng-impor modul sys. kedua argument tersebut berbentuk list atau array, dimana setiap nilai akan di-assign-kan kedalam index yang berbeda contoh sys.argv[0], sys.argv[1].... berikut kita akan membuat script Python sederhana untuk menguji sebuah argument. berikut script sederhananya :

import sys

nilai1 = sys.argv[0]
niai2 = sys.argb[1]

print (nilai1 = , nilai1)
print (nilai2 = , nilai2)

simpan script diatas dengan nama testArg.py dan jalankan script dengan perintah python testArg.py 1 2 , perlu diingat bahwa semua nilai yang dilewatkan dari argument ini bertype data string, jika teman-teman ingin menggunakannya sebagai numerik atau int maka dapat mengunakan fungsi int() untuk mengubah string menjadi int output dari script diatas yaitu :

('nilai1 = ', 'tesArg.py')
('nilai2 = ', '1')


dapat dilihat bahwa nilai argument index 0 yaitu nama script dan nilai argument index 1 yaitu angka 1. dari sini kita belajar bahwa nilai pertama dari argument yang kita kirimkan akan menuju ke parameter sys.argv dengan index 1 ataua sys.argv[1] dan seterusnya.

Script Motor Servo

kita akan membuat script motor servo dimana nilai argument digunakan sebagai lebar pulsa untuk pengaturan derajat gerak motor servo. contoh: pyhton servo.py 100, maka angka 100 akan digunakan sebagai nilai lebat pulsa PWM. berikut adalah script Python untuk mengerakan motor servo :


import time
import wiringpi
import sys
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(18, wiringpi.GPIO.PWM_OUTPUT)
wiringpi.pwmSetMode(wiringpi.GPIO.PWM_MODE_MS)
wiringpi.pwmSetClock(192)
wiringpi.pwmSetRange(2000)
pulsa = sys.argv[1]
wiringpi.pwmWrite(18, int(pulsa))

karena pinMode pwm perlu menggunakan permison sudo, maka untuk menjalankan script Python diatas dapat dijalankan dengan sudo python servo.py 100,  pada script diatas angka 100 merupakan argument pertama yang kemudian di masukan ke dalam variable pulsa dan karena masih bertype data string perlu dirubah ke int dengan perintah int(pulsa). 

angka 100 tersebut dapat dirubah nilainya dari 50 sampai 250 sesuai dengan lebar pulsa minimal dan maksimal pada motor servo. dengan begini kita hanya perlu membuat satu script Python untuk mengatur gerakan putar motor servo berapa derajat-pun kita mau dengan melewatkannya pada argument.  sekian artikel kali ini semoga dapat bermanfaat terima kasih :) .