30 menggunakan modul socket sama seperti perancangan dengan menggunakan port 13000
untuk menerima dan port 14000 untuk mengirim data.
data, addr = UDPSock.recvfrombuf print data diterima \t: + strdata
data, addr = UDPSock.recvfrombuf merupakan perintah untuk menerima data yang di kirim oleh coach computer.
4.1.3.2 Fungsi kode_data
Fungsin kode_data merupakan fungsi untuk memilah data diterima menjadi data variabel sesuai dengan tabel format penerimaan data. Program ini meneteksi array alamat
ke nol menjadi patokan data apa yang diterima. Berikut listing dari fungsi kode_data
def kode_datadata: global kon, j_error, pv_sudut, sp_sudut, tendang, enab
if data[0] == 5: enab = intdata[1] elif data[0] == 6: tendang = intdata[1]
elif data[0] == 7: print koreksi sudut pv_sudut = intdata[1]+data[2]+data[3]+data[4]
sp_sudut = intdata[5]+data[6]+data[7]+data[8] elif data[0] == 8: j_error = intdata[1]+data[2]+data[3] print jarak
elif data[0] == 9: kon = strdata[1] print kondisi
4.1.3.3 Penentuan Error Sudut
Penentuan error sudut tidak lepas dari penentuan letak sudut. Gambar 4.2 merupakan gambar Letak sudut ditentukan oleh coach computer, maka robot harus
menentukan error sudut berdasarkan gambar 4.2. Penentuan error dilakukan untuk mengetahui seberapa menyimpang robot dengan tujuan dan menentukan gerakan robot.
Jika pv_sudut adalah -45 dan sp_sudut adalah +45 maka error adalah +90, dan sebaliknyab pv_sudut adalah -135 dan sp_sudut adalah +135 maka error sudut harus sama dengan -90.
Penentuan error sudut pada robot dilakukan oleh fungsi olah_data. Dengan menentukan variabel ‘batas’. Batas adalah sudut yang membentuk garis lurus melewati
31 pusat sudut. s_error akan bernilai -180 sampai dengan +180 maka untuk mengperkecil nilai
error sudut yang ada maka s_error dibagi dengan 9.5. dengan demikian range error adalah -18,95 sampai 18,95. Tabel 4.1 merupakan contoh-contoh nilai error sudut. kemudian
diubah menjadi -10 sampai 10.
Gambar 4.11 Denah Sudut Diterima.
Tabel 4.1 Daftar Contoh Error pv_sudut
sp_sudut s_error
-45 -180
-135 -45
-135 -90
-45 -90
-45 -45
-45 -45
+45 -45
+45 +90
-45 +90
+135 -45
+135 +180
-45 +170
-145 -45
+180 -135
def olah_data: global error, pv_sudut, sp_sudut
batas = 0 s_error = 0
if sp_sudut 0:
32
batas = -180 + sp_sudut if sp_sudut 0:
batas = 180 + sp_sudut if sp_sudut = 0:
if pv_sudut = sp_sudut: for i in rangesp_sudut, pv_sudut, 1:
s_error = s_error - 1 if pv_sudut sp_sudut:
if pv_sudut = batas: for i in rangepv_sudut, sp_sudut, 1:
s_error = s_error + 1 if pv_sudut batas:
for i in rangepv_sudut, sp_sudut, 1: s_error = s_error - 1
if sp_sudut 0: if pv_sudut sp_sudut:
for i in rangepv_sudut, sp_sudut, 1: s_error = s_error + 1
if pv_sudut = sp_sudut: if pv_sudut = batas:
for i in rangesp_sudut, pv_sudut, 1: s_error = s_error + 1
if pv_sudut batas: for i in rangesp_sudut, pv_sudut, 1:
s_error = s_error - 1 error = s_error 9.5 untuk 10 derajat = 1 error
if 3 s_error -3: error = 0
if error 10: error = 10
elif error -10: error = -10
4.1.3.4 Fungsi PID